W6IT{!St5~1{i=i}zAy76p%_|w8rh@@c0Axr!ns=D-X+|*sY6!@wacG9%)Qn*O
zl0sa739kT-&_?#oVxXF6tOnqTD)cZ}2vi$`ZU8RLAlo8=_z#*P3xI~i!lEh+Pdu-L
zx{d*wgjtXbnGX_Yf@Tc7Q3YhLhPvc8noGJs2DA~1DySiA&6V{5JzFt
ojAY1KXm~va;tU{v7C?Xj0BHw!K;2aXV*mgE07*qoM6N<$f;4TDA^-pY
diff --git a/pi4micronaut-utils/src/docs/javadoc/script-dir/jquery-3.6.1.min.js b/pi4micronaut-utils/src/docs/javadoc/script-dir/jquery-3.6.1.min.js
deleted file mode 100644
index 2c69bc90..00000000
--- a/pi4micronaut-utils/src/docs/javadoc/script-dir/jquery-3.6.1.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */
-!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML=" ";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=" ",v.option=!!ce.lastChild;var ge={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("
",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length
").append(x("").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1
").text(e))},100))}});x.ui.autocomplete});
\ No newline at end of file
diff --git a/pi4micronaut-utils/src/docs/javadoc/script.js b/pi4micronaut-utils/src/docs/javadoc/script.js
deleted file mode 100644
index 0765364e..00000000
--- a/pi4micronaut-utils/src/docs/javadoc/script.js
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- */
-
-var moduleSearchIndex;
-var packageSearchIndex;
-var typeSearchIndex;
-var memberSearchIndex;
-var tagSearchIndex;
-function loadScripts(doc, tag) {
- createElem(doc, tag, 'search.js');
-
- createElem(doc, tag, 'module-search-index.js');
- createElem(doc, tag, 'package-search-index.js');
- createElem(doc, tag, 'type-search-index.js');
- createElem(doc, tag, 'member-search-index.js');
- createElem(doc, tag, 'tag-search-index.js');
-}
-
-function createElem(doc, tag, path) {
- var script = doc.createElement(tag);
- var scriptElement = doc.getElementsByTagName(tag)[0];
- script.src = pathtoroot + path;
- scriptElement.parentNode.insertBefore(script, scriptElement);
-}
-
-function show(tableId, selected, columns) {
- if (tableId !== selected) {
- document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')')
- .forEach(function(elem) {
- elem.style.display = 'none';
- });
- }
- document.querySelectorAll('div.' + selected)
- .forEach(function(elem, index) {
- elem.style.display = '';
- var isEvenRow = index % (columns * 2) < columns;
- elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor);
- elem.classList.add(isEvenRow ? evenRowColor : oddRowColor);
- });
- updateTabs(tableId, selected);
-}
-
-function updateTabs(tableId, selected) {
- document.querySelector('div#' + tableId +' .summary-table')
- .setAttribute('aria-labelledby', selected);
- document.querySelectorAll('button[id^="' + tableId + '"]')
- .forEach(function(tab, index) {
- if (selected === tab.id || (tableId === selected && index === 0)) {
- tab.className = activeTableTab;
- tab.setAttribute('aria-selected', true);
- tab.setAttribute('tabindex',0);
- } else {
- tab.className = tableTab;
- tab.setAttribute('aria-selected', false);
- tab.setAttribute('tabindex',-1);
- }
- });
-}
-
-function switchTab(e) {
- var selected = document.querySelector('[aria-selected=true]');
- if (selected) {
- if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) {
- // left or up arrow key pressed: move focus to previous tab
- selected.previousSibling.click();
- selected.previousSibling.focus();
- e.preventDefault();
- } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) {
- // right or down arrow key pressed: move focus to next tab
- selected.nextSibling.click();
- selected.nextSibling.focus();
- e.preventDefault();
- }
- }
-}
-
-var updateSearchResults = function() {};
-
-function indexFilesLoaded() {
- return moduleSearchIndex
- && packageSearchIndex
- && typeSearchIndex
- && memberSearchIndex
- && tagSearchIndex;
-}
-
-// Workaround for scroll position not being included in browser history (8249133)
-document.addEventListener("DOMContentLoaded", function(e) {
- var contentDiv = document.querySelector("div.flex-content");
- window.addEventListener("popstate", function(e) {
- if (e.state !== null) {
- contentDiv.scrollTop = e.state;
- }
- });
- window.addEventListener("hashchange", function(e) {
- history.replaceState(contentDiv.scrollTop, document.title);
- });
- contentDiv.addEventListener("scroll", function(e) {
- var timeoutID;
- if (!timeoutID) {
- timeoutID = setTimeout(function() {
- history.replaceState(contentDiv.scrollTop, document.title);
- timeoutID = null;
- }, 100);
- }
- });
- if (!location.hash) {
- history.replaceState(contentDiv.scrollTop, document.title);
- }
-});
diff --git a/pi4micronaut-utils/src/docs/javadoc/search.js b/pi4micronaut-utils/src/docs/javadoc/search.js
deleted file mode 100644
index 13aba853..00000000
--- a/pi4micronaut-utils/src/docs/javadoc/search.js
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- */
-
-var noResult = {l: "No results found"};
-var loading = {l: "Loading search index..."};
-var catModules = "Modules";
-var catPackages = "Packages";
-var catTypes = "Classes and Interfaces";
-var catMembers = "Members";
-var catSearchTags = "Search Tags";
-var highlight = "$& ";
-var searchPattern = "";
-var fallbackPattern = "";
-var RANKING_THRESHOLD = 2;
-var NO_MATCH = 0xffff;
-var MIN_RESULTS = 3;
-var MAX_RESULTS = 500;
-var UNNAMED = "";
-function escapeHtml(str) {
- return str.replace(//g, ">");
-}
-function getHighlightedText(item, matcher, fallbackMatcher) {
- var escapedItem = escapeHtml(item);
- var highlighted = escapedItem.replace(matcher, highlight);
- if (highlighted === escapedItem) {
- highlighted = escapedItem.replace(fallbackMatcher, highlight)
- }
- return highlighted;
-}
-function getURLPrefix(ui) {
- var urlPrefix="";
- var slash = "/";
- if (ui.item.category === catModules) {
- return ui.item.l + slash;
- } else if (ui.item.category === catPackages && ui.item.m) {
- return ui.item.m + slash;
- } else if (ui.item.category === catTypes || ui.item.category === catMembers) {
- if (ui.item.m) {
- urlPrefix = ui.item.m + slash;
- } else {
- $.each(packageSearchIndex, function(index, item) {
- if (item.m && ui.item.p === item.l) {
- urlPrefix = item.m + slash;
- }
- });
- }
- }
- return urlPrefix;
-}
-function createSearchPattern(term) {
- var pattern = "";
- var isWordToken = false;
- term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) {
- if (index > 0) {
- // whitespace between identifiers is significant
- pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*";
- }
- var tokens = w.split(/(?=[A-Z,.()<>[\/])/);
- for (var i = 0; i < tokens.length; i++) {
- var s = tokens[i];
- if (s === "") {
- continue;
- }
- pattern += $.ui.autocomplete.escapeRegex(s);
- isWordToken = /\w$/.test(s);
- if (isWordToken) {
- pattern += "([a-z0-9_$<>\\[\\]]*?)";
- }
- }
- });
- return pattern;
-}
-function createMatcher(pattern, flags) {
- var isCamelCase = /[A-Z]/.test(pattern);
- return new RegExp(pattern, flags + (isCamelCase ? "" : "i"));
-}
-var watermark = 'Search';
-$(function() {
- var search = $("#search-input");
- var reset = $("#reset-button");
- search.val('');
- search.prop("disabled", false);
- reset.prop("disabled", false);
- search.val(watermark).addClass('watermark');
- search.blur(function() {
- if ($(this).val().length === 0) {
- $(this).val(watermark).addClass('watermark');
- }
- });
- search.on('click keydown paste', function() {
- if ($(this).val() === watermark) {
- $(this).val('').removeClass('watermark');
- }
- });
- reset.click(function() {
- search.val('').focus();
- });
- search.focus()[0].setSelectionRange(0, 0);
-});
-$.widget("custom.catcomplete", $.ui.autocomplete, {
- _create: function() {
- this._super();
- this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)");
- },
- _renderMenu: function(ul, items) {
- var rMenu = this;
- var currentCategory = "";
- rMenu.menu.bindings = $();
- $.each(items, function(index, item) {
- var li;
- if (item.category && item.category !== currentCategory) {
- ul.append("" + item.category + " ");
- currentCategory = item.category;
- }
- li = rMenu._renderItemData(ul, item);
- if (item.category) {
- li.attr("aria-label", item.category + " : " + item.l);
- li.attr("class", "result-item");
- } else {
- li.attr("aria-label", item.l);
- li.attr("class", "result-item");
- }
- });
- },
- _renderItem: function(ul, item) {
- var label = "";
- var matcher = createMatcher(escapeHtml(searchPattern), "g");
- var fallbackMatcher = new RegExp(fallbackPattern, "gi")
- if (item.category === catModules) {
- label = getHighlightedText(item.l, matcher, fallbackMatcher);
- } else if (item.category === catPackages) {
- label = getHighlightedText(item.l, matcher, fallbackMatcher);
- } else if (item.category === catTypes) {
- label = (item.p && item.p !== UNNAMED)
- ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher)
- : getHighlightedText(item.l, matcher, fallbackMatcher);
- } else if (item.category === catMembers) {
- label = (item.p && item.p !== UNNAMED)
- ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher)
- : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher);
- } else if (item.category === catSearchTags) {
- label = getHighlightedText(item.l, matcher, fallbackMatcher);
- } else {
- label = item.l;
- }
- var li = $(" ").appendTo(ul);
- var div = $("
").appendTo(li);
- if (item.category === catSearchTags && item.h) {
- if (item.d) {
- div.html(label + " (" + item.h + ") "
- + item.d + " ");
- } else {
- div.html(label + " (" + item.h + ") ");
- }
- } else {
- if (item.m) {
- div.html(item.m + "/" + label);
- } else {
- div.html(label);
- }
- }
- return li;
- }
-});
-function rankMatch(match, category) {
- if (!match) {
- return NO_MATCH;
- }
- var index = match.index;
- var input = match.input;
- var leftBoundaryMatch = 2;
- var periferalMatch = 0;
- // make sure match is anchored on a left word boundary
- if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) {
- leftBoundaryMatch = 0;
- } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) {
- leftBoundaryMatch = 1;
- }
- var matchEnd = index + match[0].length;
- var leftParen = input.indexOf("(");
- var endOfName = leftParen > -1 ? leftParen : input.length;
- // exclude peripheral matches
- if (category !== catModules && category !== catSearchTags) {
- var delim = category === catPackages ? "/" : ".";
- if (leftParen > -1 && leftParen < index) {
- periferalMatch += 2;
- } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) {
- periferalMatch += 2;
- }
- }
- var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match
- for (var i = 1; i < match.length; i++) {
- // lower ranking if parts of the name are missing
- if (match[i])
- delta += match[i].length;
- }
- if (category === catTypes) {
- // lower ranking if a type name contains unmatched camel-case parts
- if (/[A-Z]/.test(input.substring(matchEnd)))
- delta += 5;
- if (/[A-Z]/.test(input.substring(0, index)))
- delta += 5;
- }
- return leftBoundaryMatch + periferalMatch + (delta / 200);
-
-}
-function doSearch(request, response) {
- var result = [];
- searchPattern = createSearchPattern(request.term);
- fallbackPattern = createSearchPattern(request.term.toLowerCase());
- if (searchPattern === "") {
- return this.close();
- }
- var camelCaseMatcher = createMatcher(searchPattern, "");
- var fallbackMatcher = new RegExp(fallbackPattern, "i");
-
- function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) {
- if (indexArray) {
- var newResults = [];
- $.each(indexArray, function (i, item) {
- item.category = category;
- var ranking = rankMatch(matcher.exec(nameFunc(item)), category);
- if (ranking < RANKING_THRESHOLD) {
- newResults.push({ranking: ranking, item: item});
- }
- return newResults.length <= MAX_RESULTS;
- });
- return newResults.sort(function(e1, e2) {
- return e1.ranking - e2.ranking;
- }).map(function(e) {
- return e.item;
- });
- }
- return [];
- }
- function searchIndex(indexArray, category, nameFunc) {
- var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc);
- result = result.concat(primaryResults);
- if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) {
- var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc);
- result = result.concat(secondaryResults.filter(function (item) {
- return primaryResults.indexOf(item) === -1;
- }));
- }
- }
-
- searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; });
- searchIndex(packageSearchIndex, catPackages, function(item) {
- return (item.m && request.term.indexOf("/") > -1)
- ? (item.m + "/" + item.l) : item.l;
- });
- searchIndex(typeSearchIndex, catTypes, function(item) {
- return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l;
- });
- searchIndex(memberSearchIndex, catMembers, function(item) {
- return request.term.indexOf(".") > -1
- ? item.p + "." + item.c + "." + item.l : item.l;
- });
- searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; });
-
- if (!indexFilesLoaded()) {
- updateSearchResults = function() {
- doSearch(request, response);
- }
- result.unshift(loading);
- } else {
- updateSearchResults = function() {};
- }
- response(result);
-}
-$(function() {
- $("#search-input").catcomplete({
- minLength: 1,
- delay: 300,
- source: doSearch,
- response: function(event, ui) {
- if (!ui.content.length) {
- ui.content.push(noResult);
- } else {
- $("#search-input").empty();
- }
- },
- autoFocus: true,
- focus: function(event, ui) {
- return false;
- },
- position: {
- collision: "flip"
- },
- select: function(event, ui) {
- if (ui.item.category) {
- var url = getURLPrefix(ui);
- if (ui.item.category === catModules) {
- url += "module-summary.html";
- } else if (ui.item.category === catPackages) {
- if (ui.item.u) {
- url = ui.item.u;
- } else {
- url += ui.item.l.replace(/\./g, '/') + "/package-summary.html";
- }
- } else if (ui.item.category === catTypes) {
- if (ui.item.u) {
- url = ui.item.u;
- } else if (ui.item.p === UNNAMED) {
- url += ui.item.l + ".html";
- } else {
- url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html";
- }
- } else if (ui.item.category === catMembers) {
- if (ui.item.p === UNNAMED) {
- url += ui.item.c + ".html" + "#";
- } else {
- url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#";
- }
- if (ui.item.u) {
- url += ui.item.u;
- } else {
- url += ui.item.l;
- }
- } else if (ui.item.category === catSearchTags) {
- url += ui.item.u;
- }
- if (top !== window) {
- parent.classFrame.location = pathtoroot + url;
- } else {
- window.location.href = pathtoroot + url;
- }
- $("#search-input").focus();
- }
- }
- });
-});
diff --git a/pi4micronaut-utils/src/docs/javadoc/stylesheet.css b/pi4micronaut-utils/src/docs/javadoc/stylesheet.css
deleted file mode 100644
index 6dc5b365..00000000
--- a/pi4micronaut-utils/src/docs/javadoc/stylesheet.css
+++ /dev/null
@@ -1,866 +0,0 @@
-/*
- * Javadoc style sheet
- */
-
-@import url('resources/fonts/dejavu.css');
-
-/*
- * Styles for individual HTML elements.
- *
- * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
- * HTML element throughout the page.
- */
-
-body {
- background-color:#ffffff;
- color:#353833;
- font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
- font-size:14px;
- margin:0;
- padding:0;
- height:100%;
- width:100%;
-}
-iframe {
- margin:0;
- padding:0;
- height:100%;
- width:100%;
- overflow-y:scroll;
- border:none;
-}
-a:link, a:visited {
- text-decoration:none;
- color:#4A6782;
-}
-a[href]:hover, a[href]:focus {
- text-decoration:none;
- color:#bb7a2a;
-}
-a[name] {
- color:#353833;
-}
-pre {
- font-family:'DejaVu Sans Mono', monospace;
- font-size:14px;
-}
-h1 {
- font-size:20px;
-}
-h2 {
- font-size:18px;
-}
-h3 {
- font-size:16px;
-}
-h4 {
- font-size:15px;
-}
-h5 {
- font-size:14px;
-}
-h6 {
- font-size:13px;
-}
-ul {
- list-style-type:disc;
-}
-code, tt {
- font-family:'DejaVu Sans Mono', monospace;
-}
-:not(h1, h2, h3, h4, h5, h6) > code,
-:not(h1, h2, h3, h4, h5, h6) > tt {
- font-size:14px;
- padding-top:4px;
- margin-top:8px;
- line-height:1.4em;
-}
-dt code {
- font-family:'DejaVu Sans Mono', monospace;
- font-size:14px;
- padding-top:4px;
-}
-.summary-table dt code {
- font-family:'DejaVu Sans Mono', monospace;
- font-size:14px;
- vertical-align:top;
- padding-top:4px;
-}
-sup {
- font-size:8px;
-}
-button {
- font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
- font-size: 14px;
-}
-/*
- * Styles for HTML generated by javadoc.
- *
- * These are style classes that are used by the standard doclet to generate HTML documentation.
- */
-
-/*
- * Styles for document title and copyright.
- */
-.clear {
- clear:both;
- height:0;
- overflow:hidden;
-}
-.about-language {
- float:right;
- padding:0 21px 8px 8px;
- font-size:11px;
- margin-top:-9px;
- height:2.9em;
-}
-.legal-copy {
- margin-left:.5em;
-}
-.tab {
- background-color:#0066FF;
- color:#ffffff;
- padding:8px;
- width:5em;
- font-weight:bold;
-}
-/*
- * Styles for navigation bar.
- */
-@media screen {
- .flex-box {
- position:fixed;
- display:flex;
- flex-direction:column;
- height: 100%;
- width: 100%;
- }
- .flex-header {
- flex: 0 0 auto;
- }
- .flex-content {
- flex: 1 1 auto;
- overflow-y: auto;
- }
-}
-.top-nav {
- background-color:#4D7A97;
- color:#FFFFFF;
- float:left;
- padding:0;
- width:100%;
- clear:right;
- min-height:2.8em;
- padding-top:10px;
- overflow:hidden;
- font-size:12px;
-}
-.sub-nav {
- background-color:#dee3e9;
- float:left;
- width:100%;
- overflow:hidden;
- font-size:12px;
-}
-.sub-nav div {
- clear:left;
- float:left;
- padding:0 0 5px 6px;
- text-transform:uppercase;
-}
-.sub-nav .nav-list {
- padding-top:5px;
-}
-ul.nav-list {
- display:block;
- margin:0 25px 0 0;
- padding:0;
-}
-ul.sub-nav-list {
- float:left;
- margin:0 25px 0 0;
- padding:0;
-}
-ul.nav-list li {
- list-style:none;
- float:left;
- padding: 5px 6px;
- text-transform:uppercase;
-}
-.sub-nav .nav-list-search {
- float:right;
- margin:0 0 0 0;
- padding:5px 6px;
- clear:none;
-}
-.nav-list-search label {
- position:relative;
- right:-16px;
-}
-ul.sub-nav-list li {
- list-style:none;
- float:left;
- padding-top:10px;
-}
-.top-nav a:link, .top-nav a:active, .top-nav a:visited {
- color:#FFFFFF;
- text-decoration:none;
- text-transform:uppercase;
-}
-.top-nav a:hover {
- text-decoration:none;
- color:#bb7a2a;
- text-transform:uppercase;
-}
-.nav-bar-cell1-rev {
- background-color:#F8981D;
- color:#253441;
- margin: auto 5px;
-}
-.skip-nav {
- position:absolute;
- top:auto;
- left:-9999px;
- overflow:hidden;
-}
-/*
- * Hide navigation links and search box in print layout
- */
-@media print {
- ul.nav-list, div.sub-nav {
- display:none;
- }
-}
-/*
- * Styles for page header and footer.
- */
-.title {
- color:#2c4557;
- margin:10px 0;
-}
-.sub-title {
- margin:5px 0 0 0;
-}
-.header ul {
- margin:0 0 15px 0;
- padding:0;
-}
-.header ul li, .footer ul li {
- list-style:none;
- font-size:13px;
-}
-/*
- * Styles for headings.
- */
-body.class-declaration-page .summary h2,
-body.class-declaration-page .details h2,
-body.class-use-page h2,
-body.module-declaration-page .block-list h2 {
- font-style: italic;
- padding:0;
- margin:15px 0;
-}
-body.class-declaration-page .summary h3,
-body.class-declaration-page .details h3,
-body.class-declaration-page .summary .inherited-list h2 {
- background-color:#dee3e9;
- border:1px solid #d0d9e0;
- margin:0 0 6px -8px;
- padding:7px 5px;
-}
-/*
- * Styles for page layout containers.
- */
-main {
- clear:both;
- padding:10px 20px;
- position:relative;
-}
-dl.notes > dt {
- font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
- font-size:12px;
- font-weight:bold;
- margin:10px 0 0 0;
- color:#4E4E4E;
-}
-dl.notes > dd {
- margin:5px 10px 10px 0;
- font-size:14px;
- font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
-}
-dl.name-value > dt {
- margin-left:1px;
- font-size:1.1em;
- display:inline;
- font-weight:bold;
-}
-dl.name-value > dd {
- margin:0 0 0 1px;
- font-size:1.1em;
- display:inline;
-}
-/*
- * Styles for lists.
- */
-li.circle {
- list-style:circle;
-}
-ul.horizontal li {
- display:inline;
- font-size:0.9em;
-}
-div.inheritance {
- margin:0;
- padding:0;
-}
-div.inheritance div.inheritance {
- margin-left:2em;
-}
-ul.block-list,
-ul.details-list,
-ul.member-list,
-ul.summary-list {
- margin:10px 0 10px 0;
- padding:0;
-}
-ul.block-list > li,
-ul.details-list > li,
-ul.member-list > li,
-ul.summary-list > li {
- list-style:none;
- margin-bottom:15px;
- line-height:1.4;
-}
-.summary-table dl, .summary-table dl dt, .summary-table dl dd {
- margin-top:0;
- margin-bottom:1px;
-}
-ul.see-list, ul.see-list-long {
- padding-left: 0;
- list-style: none;
-}
-ul.see-list li {
- display: inline;
-}
-ul.see-list li:not(:last-child):after,
-ul.see-list-long li:not(:last-child):after {
- content: ", ";
- white-space: pre-wrap;
-}
-/*
- * Styles for tables.
- */
-.summary-table, .details-table {
- width:100%;
- border-spacing:0;
- border-left:1px solid #EEE;
- border-right:1px solid #EEE;
- border-bottom:1px solid #EEE;
- padding:0;
-}
-.caption {
- position:relative;
- text-align:left;
- background-repeat:no-repeat;
- color:#253441;
- font-weight:bold;
- clear:none;
- overflow:hidden;
- padding:0;
- padding-top:10px;
- padding-left:1px;
- margin:0;
- white-space:pre;
-}
-.caption a:link, .caption a:visited {
- color:#1f389c;
-}
-.caption a:hover,
-.caption a:active {
- color:#FFFFFF;
-}
-.caption span {
- white-space:nowrap;
- padding-top:5px;
- padding-left:12px;
- padding-right:12px;
- padding-bottom:7px;
- display:inline-block;
- float:left;
- background-color:#F8981D;
- border: none;
- height:16px;
-}
-div.table-tabs {
- padding:10px 0 0 1px;
- margin:0;
-}
-div.table-tabs > button {
- border: none;
- cursor: pointer;
- padding: 5px 12px 7px 12px;
- font-weight: bold;
- margin-right: 3px;
-}
-div.table-tabs > button.active-table-tab {
- background: #F8981D;
- color: #253441;
-}
-div.table-tabs > button.table-tab {
- background: #4D7A97;
- color: #FFFFFF;
-}
-.two-column-summary {
- display: grid;
- grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
-}
-.three-column-summary {
- display: grid;
- grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto);
-}
-.four-column-summary {
- display: grid;
- grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto);
-}
-@media screen and (max-width: 600px) {
- .two-column-summary {
- display: grid;
- grid-template-columns: 1fr;
- }
-}
-@media screen and (max-width: 800px) {
- .three-column-summary {
- display: grid;
- grid-template-columns: minmax(10%, max-content) minmax(25%, auto);
- }
- .three-column-summary .col-last {
- grid-column-end: span 2;
- }
-}
-@media screen and (max-width: 1000px) {
- .four-column-summary {
- display: grid;
- grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
- }
-}
-.summary-table > div, .details-table > div {
- text-align:left;
- padding: 8px 3px 3px 7px;
-}
-.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name {
- vertical-align:top;
- padding-right:0;
- padding-top:8px;
- padding-bottom:3px;
-}
-.table-header {
- background:#dee3e9;
- font-weight: bold;
-}
-.col-first, .col-first {
- font-size:13px;
-}
-.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last {
- font-size:13px;
-}
-.col-first, .col-second, .col-constructor-name {
- vertical-align:top;
- overflow: auto;
-}
-.col-last {
- white-space:normal;
-}
-.col-first a:link, .col-first a:visited,
-.col-second a:link, .col-second a:visited,
-.col-first a:link, .col-first a:visited,
-.col-second a:link, .col-second a:visited,
-.col-constructor-name a:link, .col-constructor-name a:visited,
-.col-summary-item-name a:link, .col-summary-item-name a:visited,
-.constant-values-container a:link, .constant-values-container a:visited,
-.all-classes-container a:link, .all-classes-container a:visited,
-.all-packages-container a:link, .all-packages-container a:visited {
- font-weight:bold;
-}
-.table-sub-heading-color {
- background-color:#EEEEFF;
-}
-.even-row-color, .even-row-color .table-header {
- background-color:#FFFFFF;
-}
-.odd-row-color, .odd-row-color .table-header {
- background-color:#EEEEEF;
-}
-/*
- * Styles for contents.
- */
-.deprecated-content {
- margin:0;
- padding:10px 0;
-}
-div.block {
- font-size:14px;
- font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
-}
-.col-last div {
- padding-top:0;
-}
-.col-last a {
- padding-bottom:3px;
-}
-.module-signature,
-.package-signature,
-.type-signature,
-.member-signature {
- font-family:'DejaVu Sans Mono', monospace;
- font-size:14px;
- margin:14px 0;
- white-space: pre-wrap;
-}
-.module-signature,
-.package-signature,
-.type-signature {
- margin-top: 0;
-}
-.member-signature .type-parameters-long,
-.member-signature .parameters,
-.member-signature .exceptions {
- display: inline-block;
- vertical-align: top;
- white-space: pre;
-}
-.member-signature .type-parameters {
- white-space: normal;
-}
-/*
- * Styles for formatting effect.
- */
-.source-line-no {
- color:green;
- padding:0 30px 0 0;
-}
-h1.hidden {
- visibility:hidden;
- overflow:hidden;
- font-size:10px;
-}
-.block {
- display:block;
- margin:0 10px 5px 0;
- color:#474747;
-}
-.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link,
-.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type,
-.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label {
- font-weight:bold;
-}
-.deprecation-comment, .help-footnote, .preview-comment {
- font-style:italic;
-}
-.deprecation-block {
- font-size:14px;
- font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
- border-style:solid;
- border-width:thin;
- border-radius:10px;
- padding:10px;
- margin-bottom:10px;
- margin-right:10px;
- display:inline-block;
-}
-.preview-block {
- font-size:14px;
- font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
- border-style:solid;
- border-width:thin;
- border-radius:10px;
- padding:10px;
- margin-bottom:10px;
- margin-right:10px;
- display:inline-block;
-}
-div.block div.deprecation-comment {
- font-style:normal;
-}
-/*
- * Styles specific to HTML5 elements.
- */
-main, nav, header, footer, section {
- display:block;
-}
-/*
- * Styles for javadoc search.
- */
-.ui-autocomplete-category {
- font-weight:bold;
- font-size:15px;
- padding:7px 0 7px 3px;
- background-color:#4D7A97;
- color:#FFFFFF;
-}
-.ui-autocomplete {
- max-height:85%;
- max-width:65%;
- overflow-y:scroll;
- overflow-x:scroll;
- white-space:nowrap;
- box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
-}
-ul.ui-autocomplete {
- position:fixed;
- z-index:999999;
- background-color: #FFFFFF;
-}
-ul.ui-autocomplete li {
- float:left;
- clear:both;
- width:100%;
-}
-.ui-autocomplete .result-item {
- font-size: inherit;
-}
-.ui-autocomplete .result-highlight {
- font-weight:bold;
-}
-#search-input {
- background-image:url('resources/glass.png');
- background-size:13px;
- background-repeat:no-repeat;
- background-position:2px 3px;
- padding-left:20px;
- position:relative;
- right:-18px;
- width:400px;
-}
-#reset-button {
- background-color: rgb(255,255,255);
- background-image:url('resources/x.png');
- background-position:center;
- background-repeat:no-repeat;
- background-size:12px;
- border:0 none;
- width:16px;
- height:16px;
- position:relative;
- left:-4px;
- top:-4px;
- font-size:0px;
-}
-.watermark {
- color:#545454;
-}
-.search-tag-desc-result {
- font-style:italic;
- font-size:11px;
-}
-.search-tag-holder-result {
- font-style:italic;
- font-size:12px;
-}
-.search-tag-result:target {
- background-color:yellow;
-}
-.module-graph span {
- display:none;
- position:absolute;
-}
-.module-graph:hover span {
- display:block;
- margin: -100px 0 0 100px;
- z-index: 1;
-}
-.inherited-list {
- margin: 10px 0 10px 0;
-}
-section.class-description {
- line-height: 1.4;
-}
-.summary section[class$="-summary"], .details section[class$="-details"],
-.class-uses .detail, .serialized-class-details {
- padding: 0px 20px 5px 10px;
- border: 1px solid #ededed;
- background-color: #f8f8f8;
-}
-.inherited-list, section[class$="-details"] .detail {
- padding:0 0 5px 8px;
- background-color:#ffffff;
- border:none;
-}
-.vertical-separator {
- padding: 0 5px;
-}
-ul.help-section-list {
- margin: 0;
-}
-ul.help-subtoc > li {
- display: inline-block;
- padding-right: 5px;
- font-size: smaller;
-}
-ul.help-subtoc > li::before {
- content: "\2022" ;
- padding-right:2px;
-}
-span.help-note {
- font-style: italic;
-}
-/*
- * Indicator icon for external links.
- */
-main a[href*="://"]::after {
- content:"";
- display:inline-block;
- background-image:url('data:image/svg+xml; utf8, \
- \
- \
- ');
- background-size:100% 100%;
- width:7px;
- height:7px;
- margin-left:2px;
- margin-bottom:4px;
-}
-main a[href*="://"]:hover::after,
-main a[href*="://"]:focus::after {
- background-image:url('data:image/svg+xml; utf8, \
- \
- \
- ');
-}
-
-/*
- * Styles for user-provided tables.
- *
- * borderless:
- * No borders, vertical margins, styled caption.
- * This style is provided for use with existing doc comments.
- * In general, borderless tables should not be used for layout purposes.
- *
- * plain:
- * Plain borders around table and cells, vertical margins, styled caption.
- * Best for small tables or for complex tables for tables with cells that span
- * rows and columns, when the "striped" style does not work well.
- *
- * striped:
- * Borders around the table and vertical borders between cells, striped rows,
- * vertical margins, styled caption.
- * Best for tables that have a header row, and a body containing a series of simple rows.
- */
-
-table.borderless,
-table.plain,
-table.striped {
- margin-top: 10px;
- margin-bottom: 10px;
-}
-table.borderless > caption,
-table.plain > caption,
-table.striped > caption {
- font-weight: bold;
- font-size: smaller;
-}
-table.borderless th, table.borderless td,
-table.plain th, table.plain td,
-table.striped th, table.striped td {
- padding: 2px 5px;
-}
-table.borderless,
-table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
-table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
- border: none;
-}
-table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
- background-color: transparent;
-}
-table.plain {
- border-collapse: collapse;
- border: 1px solid black;
-}
-table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
- background-color: transparent;
-}
-table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
-table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
- border: 1px solid black;
-}
-table.striped {
- border-collapse: collapse;
- border: 1px solid black;
-}
-table.striped > thead {
- background-color: #E3E3E3;
-}
-table.striped > thead > tr > th, table.striped > thead > tr > td {
- border: 1px solid black;
-}
-table.striped > tbody > tr:nth-child(even) {
- background-color: #EEE
-}
-table.striped > tbody > tr:nth-child(odd) {
- background-color: #FFF
-}
-table.striped > tbody > tr > th, table.striped > tbody > tr > td {
- border-left: 1px solid black;
- border-right: 1px solid black;
-}
-table.striped > tbody > tr > th {
- font-weight: normal;
-}
-/**
- * Tweak font sizes and paddings for small screens.
- */
-@media screen and (max-width: 1050px) {
- #search-input {
- width: 300px;
- }
-}
-@media screen and (max-width: 800px) {
- #search-input {
- width: 200px;
- }
- .top-nav,
- .bottom-nav {
- font-size: 11px;
- padding-top: 6px;
- }
- .sub-nav {
- font-size: 11px;
- }
- .about-language {
- padding-right: 16px;
- }
- ul.nav-list li,
- .sub-nav .nav-list-search {
- padding: 6px;
- }
- ul.sub-nav-list li {
- padding-top: 5px;
- }
- main {
- padding: 10px;
- }
- .summary section[class$="-summary"], .details section[class$="-details"],
- .class-uses .detail, .serialized-class-details {
- padding: 0 8px 5px 8px;
- }
- body {
- -webkit-text-size-adjust: none;
- }
-}
-@media screen and (max-width: 500px) {
- #search-input {
- width: 150px;
- }
- .top-nav,
- .bottom-nav {
- font-size: 10px;
- }
- .sub-nav {
- font-size: 10px;
- }
- .about-language {
- font-size: 10px;
- padding-right: 12px;
- }
-}
diff --git a/pi4micronaut-utils/src/docs/javadoc/tag-search-index.js b/pi4micronaut-utils/src/docs/javadoc/tag-search-index.js
deleted file mode 100644
index 0367dae6..00000000
--- a/pi4micronaut-utils/src/docs/javadoc/tag-search-index.js
+++ /dev/null
@@ -1 +0,0 @@
-tagSearchIndex = [];updateSearchResults();
\ No newline at end of file
diff --git a/pi4micronaut-utils/src/docs/javadoc/type-search-index.js b/pi4micronaut-utils/src/docs/javadoc/type-search-index.js
deleted file mode 100644
index 945b42aa..00000000
--- a/pi4micronaut-utils/src/docs/javadoc/type-search-index.js
+++ /dev/null
@@ -1 +0,0 @@
-typeSearchIndex = [{"p":"com.opensourcewithslu.outputdevices","l":"ActiveBuzzerHelper"},{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"com.opensourcewithslu","l":"Application"},{"p":"com.opensourcewithslu.utilities","l":"DigitalInputConfiguration"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","l":"DigitalInputMultiPinConfiguration"},{"p":"com.opensourcewithslu.utilities","l":"DigitalOutputConfiguration"},{"p":"com.opensourcewithslu.utilities","l":"i2cConfiguration"},{"p":"com.opensourcewithslu.outputdevices","l":"LCD1602Helper"},{"p":"com.opensourcewithslu.outputdevices","l":"LEDHelper"},{"p":"com.opensourcewithslu.utilities","l":"MultipinConfiguration"},{"p":"com.opensourcewithslu.inputdevices","l":"PhotoResistorHelper"},{"p":"com.opensourcewithslu.utilities","l":"Pi4JFactory"},{"p":"com.opensourcewithslu.utilities","l":"Pi4JMultipinFactory"},{"p":"com.opensourcewithslu.inputdevices","l":"PushButtonHelper"},{"p":"com.opensourcewithslu.utilities","l":"PwmConfiguration"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","l":"PwmMultiPinConfiguration"},{"p":"com.opensourcewithslu.inputdevices","l":"RFidHelper"},{"p":"com.opensourcewithslu.outputdevices","l":"RGBLEDHelper"},{"p":"com.opensourcewithslu.inputdevices","l":"RotaryEncoderHelper"},{"p":"com.opensourcewithslu.inputdevices","l":"SlideSwitchHelper"},{"p":"com.opensourcewithslu.utilities","l":"SpiConfiguration"},{"p":"com.opensourcewithslu.inputdevices","l":"TouchSwitchHelper"}];updateSearchResults();
\ No newline at end of file
diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/DigitalInputConfiguration.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/DigitalInputConfiguration.java
index 1d78a2d3..8fbf916f 100644
--- a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/DigitalInputConfiguration.java
+++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/DigitalInputConfiguration.java
@@ -3,10 +3,12 @@
import com.pi4j.io.gpio.digital.PullResistance;
import io.micronaut.context.annotation.EachProperty;
import io.micronaut.context.annotation.Parameter;
+import io.micronaut.context.annotation.Prototype;
/**
* This class handles the configuration of a digital input component.
*/
+@Prototype
@EachProperty("pi4j.digital-input")
public class DigitalInputConfiguration {
diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/DigitalOutputConfiguration.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/DigitalOutputConfiguration.java
index 92926980..608e2d71 100644
--- a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/DigitalOutputConfiguration.java
+++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/DigitalOutputConfiguration.java
@@ -1,12 +1,15 @@
package com.opensourcewithslu.utilities;
+import com.pi4j.io.gpio.digital.DigitalOutput;
import com.pi4j.io.gpio.digital.DigitalState;
import io.micronaut.context.annotation.EachProperty;
import io.micronaut.context.annotation.Parameter;
+import io.micronaut.context.annotation.Prototype;
/**
* This class handles the configuration of a digital output component.
*/
+@Prototype
@EachProperty("pi4j.digital-output")
public class DigitalOutputConfiguration {
@@ -112,4 +115,5 @@ public String getProvider() {
public void setProvider(String provider) {
this.provider = provider;
}
+
}
diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JFactory.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JFactory.java
index 6cf1e42f..a284ccd1 100644
--- a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JFactory.java
+++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JFactory.java
@@ -7,8 +7,6 @@
import com.pi4j.io.i2c.I2C;
import com.pi4j.io.i2c.I2CConfig;
import com.pi4j.io.pwm.Pwm;
-import com.pi4j.io.pwm.PwmConfig;
-import com.pi4j.io.pwm.PwmType;
import com.pi4j.io.spi.Spi;
import com.pi4j.io.spi.SpiConfig;
import com.pi4j.library.pigpio.PiGpio;
@@ -27,6 +25,7 @@
/**
* The Pi4JFactory class is responsible for creating all the beans for components that are being used.
*/
+
@Factory
public class Pi4JFactory {
/**
@@ -64,6 +63,7 @@ protected String[] getProviders() {
* @param pi4jContext The Pi4J {@link Context}.
* @return A DigitalOutput Object.
*/
+ @Singleton
@EachBean(DigitalOutputConfiguration.class)
public DigitalOutput createDigitalOutput(DigitalOutputConfiguration config, Context pi4jContext) {
var outputConfigBuilder = DigitalOutput.newConfigBuilder(pi4jContext)
@@ -82,6 +82,7 @@ public DigitalOutput createDigitalOutput(DigitalOutputConfiguration config, Cont
* @param pi4jContext The Pi4J {@link Context}.
* @return A DigitalInput Object.
*/
+ @Singleton
@EachBean(DigitalInputConfiguration.class)
public DigitalInput createDigitalInput(DigitalInputConfiguration config, Context pi4jContext) {
var inputConfigBuilder = DigitalInput.newConfigBuilder(pi4jContext)
@@ -100,9 +101,11 @@ public DigitalInput createDigitalInput(DigitalInputConfiguration config, Context
* @param pi4jContext The Pi4J {@link Context}.
* @return A PWM Object.
*/
+ @Singleton
@EachBean(PwmConfiguration.class)
public Pwm createPwm(PwmConfiguration config, Context pi4jContext) {
- var outputConfigBuilder = pi4jContext.create(
+
+ return pi4jContext.create(
Pwm.newConfigBuilder(pi4jContext)
.id(config.getId())
.name(config.getName())
@@ -113,8 +116,6 @@ public Pwm createPwm(PwmConfiguration config, Context pi4jContext) {
.shutdown(config.getShutdown())
.build()
);
-
- return outputConfigBuilder;
}
/**
@@ -123,15 +124,15 @@ public Pwm createPwm(PwmConfiguration config, Context pi4jContext) {
* @param pi4jContext The Pi4J {@link Context}.
* @return A SpiConfigBuilder Object.
*/
+ @Singleton
@EachBean(SpiConfiguration.class)
public SpiConfig createSpi(SpiConfiguration config, Context pi4jContext) {
- var outputConfigBuilder = Spi.newConfigBuilder(pi4jContext)
+ return Spi.newConfigBuilder(pi4jContext)
.id(config.getId())
.name(config.getName())
.address(config.getChannel())
.baud(config.getBaud())
.build();
- return outputConfigBuilder;
}
/**
@@ -140,14 +141,14 @@ public SpiConfig createSpi(SpiConfiguration config, Context pi4jContext) {
* @param pi4jContext The Pi4J {@link Context}.
* @return A I2CConfigBuilder Object.
*/
+ @Singleton
@EachBean(i2cConfiguration.class)
public I2CConfig createI2C(i2cConfiguration config, Context pi4jContext) {
- var outputConfigBuilder = I2C.newConfigBuilder(pi4jContext)
+ return I2C.newConfigBuilder(pi4jContext)
.id(config.getId())
.name(config.getName())
.bus(config.getBus())
.device(config.getDevice())
.build();
- return outputConfigBuilder;
}
}
diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JMultipinFactory.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JMultipinFactory.java
index 124b2e25..60273cc3 100644
--- a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JMultipinFactory.java
+++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JMultipinFactory.java
@@ -7,10 +7,12 @@
import com.pi4j.io.pwm.Pwm;
import io.micronaut.context.annotation.EachBean;
import io.micronaut.context.annotation.Factory;
+import io.micronaut.context.annotation.Prototype;
/**
* The Pi4JMultipinFactory class is responsible for creating all the beans for all multi pin components that are being used.
*/
+@Prototype
@Factory
public class Pi4JMultipinFactory {
diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/PwmConfiguration.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/PwmConfiguration.java
index 3b49937f..64bb6b52 100644
--- a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/PwmConfiguration.java
+++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/PwmConfiguration.java
@@ -3,10 +3,12 @@
import com.pi4j.io.pwm.PwmType;
import io.micronaut.context.annotation.EachProperty;
import io.micronaut.context.annotation.Parameter;
+import io.micronaut.context.annotation.Prototype;
/**
* The PwmConfiguration class handles the configuration of a pwm component.
*/
+@Prototype
@EachProperty("pi4j.pwm")
public class PwmConfiguration {
private final String id;
diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/SpiConfiguration.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/SpiConfiguration.java
index b0dfd7cd..2f6d7282 100644
--- a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/SpiConfiguration.java
+++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/SpiConfiguration.java
@@ -3,10 +3,12 @@
import com.pi4j.io.spi.SpiMode;
import io.micronaut.context.annotation.EachProperty;
import io.micronaut.context.annotation.Parameter;
+import io.micronaut.context.annotation.Prototype;
/**
* This class handles the configuration of a SPI component.
*/
+@Prototype
@EachProperty("pi4j.spi")
public class SpiConfiguration {
private final String id;
diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/i2cConfiguration.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/i2cConfiguration.java
index a6673d08..e9cdaf51 100644
--- a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/i2cConfiguration.java
+++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/i2cConfiguration.java
@@ -2,10 +2,12 @@
import io.micronaut.context.annotation.EachProperty;
import io.micronaut.context.annotation.Parameter;
+import io.micronaut.context.annotation.Prototype;
/**
* This class handles the configuration of an I2C components.
*/
+@Prototype
@EachProperty("pi4j.i2c")
public class i2cConfiguration {
From 0b2c4e5364a9ec7fc6e71a37680d7ebf4ae04ec3 Mon Sep 17 00:00:00 2001
From: Ruthvik Mannem <116761292+ruthvikm@users.noreply.github.com>
Date: Wed, 13 Mar 2024 18:16:22 -0500
Subject: [PATCH 3/8] Fixed javadoc errors (#189)
---
pi4micronaut-utils/build.gradle | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pi4micronaut-utils/build.gradle b/pi4micronaut-utils/build.gradle
index 302117e0..5a2e1e40 100644
--- a/pi4micronaut-utils/build.gradle
+++ b/pi4micronaut-utils/build.gradle
@@ -7,7 +7,7 @@ plugins {
}
group = 'io.github.oss-slu'
-version = '1.0'
+version = 'v1.0'
apply plugin: 'maven-publish'
apply plugin: 'signing'
@@ -35,7 +35,7 @@ java {
targetCompatibility = JavaVersion.toVersion("17")
}
-tasks.build.dependsOn {tasks.javadoc; tasks.shadowJar}
+tasks.build.dependsOn tasks.shadowJar
tasks.named('build').configure {
dependsOn 'javadoc'
From 470c8288a9201dd036c8681f381f680bd6eb210d Mon Sep 17 00:00:00 2001
From: Ruthvik Mannem <116761292+ruthvikm@users.noreply.github.com>
Date: Wed, 13 Mar 2024 18:23:14 -0500
Subject: [PATCH 4/8] Javadoc errors (#190)
* Fixed javadoc errors
* removed javadoc from .gitignore
---
pi4micronaut-utils/.gitignore | 1 -
pi4micronaut-utils/build.gradle | 2 +-
.../src/docs/javadoc/allclasses-index.html | 151 ++
.../src/docs/javadoc/allpackages-index.html | 71 +
.../com/opensourcewithslu/Application.html | 179 +++
.../inputdevices/PIRSensorHelper.html | 242 ++++
.../inputdevices/PhotoResistorHelper.html | 298 ++++
.../inputdevices/PushButtonHelper.html | 246 ++++
.../inputdevices/RFidHelper.html | 238 +++
.../inputdevices/RotaryEncoderHelper.html | 198 +++
.../inputdevices/SlideSwitchHelper.html | 246 ++++
.../inputdevices/TouchSwitchHelper.html | 242 ++++
.../inputdevices/package-summary.html | 131 ++
.../inputdevices/package-tree.html | 76 +
.../outputdevices/ActiveBuzzerHelper.html | 265 ++++
.../outputdevices/LCD1602Helper.html | 252 ++++
.../outputdevices/LEDHelper.html | 206 +++
.../outputdevices/RGBLEDHelper.html | 369 +++++
.../outputdevices/package-summary.html | 119 ++
.../outputdevices/package-tree.html | 73 +
.../opensourcewithslu/package-summary.html | 107 ++
.../com/opensourcewithslu/package-tree.html | 70 +
.../utilities/DigitalInputConfiguration.html | 349 +++++
.../utilities/DigitalOutputConfiguration.html | 349 +++++
.../DigitalInputMultiPinConfiguration.html | 348 +++++
.../PwmMultiPinConfiguration.html | 380 +++++
.../MultiPinConfigs/package-summary.html | 107 ++
.../MultiPinConfigs/package-tree.html | 71 +
.../utilities/MultipinConfiguration.html | 206 +++
.../utilities/Pi4JFactory.html | 297 ++++
.../utilities/Pi4JMultipinFactory.html | 209 +++
.../utilities/PwmConfiguration.html | 381 +++++
.../utilities/SpiConfiguration.html | 317 ++++
.../utilities/i2cConfiguration.html | 285 ++++
.../utilities/package-summary.html | 137 ++
.../utilities/package-tree.html | 77 +
pi4micronaut-utils/src/docs/javadoc/copy.svg | 33 +
.../src/docs/javadoc/element-list | 5 +
.../src/docs/javadoc/help-doc.html | 182 +++
.../src/docs/javadoc/index-all.html | 845 +++++++++++
.../src/docs/javadoc/index.html | 73 +
.../src/docs/javadoc/legal/COPYRIGHT | 1 +
.../src/docs/javadoc/legal/LICENSE | 1 +
.../src/docs/javadoc/legal/jquery.md | 72 +
.../src/docs/javadoc/legal/jqueryUI.md | 49 +
pi4micronaut-utils/src/docs/javadoc/link.svg | 31 +
.../src/docs/javadoc/member-search-index.js | 1 +
.../src/docs/javadoc/module-search-index.js | 1 +
.../src/docs/javadoc/overview-summary.html | 25 +
.../src/docs/javadoc/overview-tree.html | 95 ++
.../src/docs/javadoc/package-search-index.js | 1 +
.../src/docs/javadoc/resources/glass.png | Bin 0 -> 499 bytes
.../src/docs/javadoc/resources/x.png | Bin 0 -> 394 bytes
.../javadoc/script-dir/jquery-3.6.1.min.js | 2 +
.../docs/javadoc/script-dir/jquery-ui.min.css | 6 +
.../docs/javadoc/script-dir/jquery-ui.min.js | 6 +
pi4micronaut-utils/src/docs/javadoc/script.js | 253 ++++
.../src/docs/javadoc/search-page.js | 284 ++++
.../src/docs/javadoc/search.html | 71 +
pi4micronaut-utils/src/docs/javadoc/search.js | 458 ++++++
.../src/docs/javadoc/stylesheet.css | 1272 +++++++++++++++++
.../src/docs/javadoc/tag-search-index.js | 1 +
.../src/docs/javadoc/type-search-index.js | 1 +
63 files changed, 11062 insertions(+), 2 deletions(-)
create mode 100644 pi4micronaut-utils/src/docs/javadoc/allclasses-index.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/allpackages-index.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/Application.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PIRSensorHelper.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PhotoResistorHelper.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PushButtonHelper.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/RFidHelper.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/RotaryEncoderHelper.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/SlideSwitchHelper.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/TouchSwitchHelper.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-summary.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-tree.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/ActiveBuzzerHelper.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/LCD1602Helper.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/LEDHelper.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/RGBLEDHelper.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-summary.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-tree.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-summary.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-tree.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalInputConfiguration.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalOutputConfiguration.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/DigitalInputMultiPinConfiguration.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/PwmMultiPinConfiguration.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/package-summary.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/package-tree.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultipinConfiguration.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JFactory.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JMultipinFactory.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/PwmConfiguration.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/SpiConfiguration.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/i2cConfiguration.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/package-summary.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/package-tree.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/copy.svg
create mode 100644 pi4micronaut-utils/src/docs/javadoc/element-list
create mode 100644 pi4micronaut-utils/src/docs/javadoc/help-doc.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/index-all.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/index.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/legal/COPYRIGHT
create mode 100644 pi4micronaut-utils/src/docs/javadoc/legal/LICENSE
create mode 100644 pi4micronaut-utils/src/docs/javadoc/legal/jquery.md
create mode 100644 pi4micronaut-utils/src/docs/javadoc/legal/jqueryUI.md
create mode 100644 pi4micronaut-utils/src/docs/javadoc/link.svg
create mode 100644 pi4micronaut-utils/src/docs/javadoc/member-search-index.js
create mode 100644 pi4micronaut-utils/src/docs/javadoc/module-search-index.js
create mode 100644 pi4micronaut-utils/src/docs/javadoc/overview-summary.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/overview-tree.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/package-search-index.js
create mode 100644 pi4micronaut-utils/src/docs/javadoc/resources/glass.png
create mode 100644 pi4micronaut-utils/src/docs/javadoc/resources/x.png
create mode 100644 pi4micronaut-utils/src/docs/javadoc/script-dir/jquery-3.6.1.min.js
create mode 100644 pi4micronaut-utils/src/docs/javadoc/script-dir/jquery-ui.min.css
create mode 100644 pi4micronaut-utils/src/docs/javadoc/script-dir/jquery-ui.min.js
create mode 100644 pi4micronaut-utils/src/docs/javadoc/script.js
create mode 100644 pi4micronaut-utils/src/docs/javadoc/search-page.js
create mode 100644 pi4micronaut-utils/src/docs/javadoc/search.html
create mode 100644 pi4micronaut-utils/src/docs/javadoc/search.js
create mode 100644 pi4micronaut-utils/src/docs/javadoc/stylesheet.css
create mode 100644 pi4micronaut-utils/src/docs/javadoc/tag-search-index.js
create mode 100644 pi4micronaut-utils/src/docs/javadoc/type-search-index.js
diff --git a/pi4micronaut-utils/.gitignore b/pi4micronaut-utils/.gitignore
index c72da8f3..5dacd506 100644
--- a/pi4micronaut-utils/.gitignore
+++ b/pi4micronaut-utils/.gitignore
@@ -5,7 +5,6 @@ bin/
build/
target/
out/
-src/docs/javadoc
.micronaut/
.idea
*.iml
diff --git a/pi4micronaut-utils/build.gradle b/pi4micronaut-utils/build.gradle
index 5a2e1e40..a7655821 100644
--- a/pi4micronaut-utils/build.gradle
+++ b/pi4micronaut-utils/build.gradle
@@ -95,7 +95,7 @@ publishing {
mavenJava(MavenPublication) {
groupId = 'io.github.oss-slu'
artifactId = 'pi4micronaut-utils'
- version = '1.0'
+ version = 'v1.0'
from components.java
artifact sourcesJar
diff --git a/pi4micronaut-utils/src/docs/javadoc/allclasses-index.html b/pi4micronaut-utils/src/docs/javadoc/allclasses-index.html
new file mode 100644
index 00000000..eca19578
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/allclasses-index.html
@@ -0,0 +1,151 @@
+
+
+
+
+All Classes and Interfaces (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
Classes
+
+
+
+
+
+
The ActiveBuzzerHelper class contains methods that pertain to the control of the active buzzer.
+
+
+
+
Runs the Micronaut framework in the Pi4Micronaut framework.
+
+
+
+
This class handles the configuration of a digital input component.
+
+
+
+
This class handles the configuration of a digital input component that has multiple pins.
+
+
+
+
This class handles the configuration of a digital output component.
+
+
+
+
This class handles the configuration of an I2C components.
+
+
+
+
This helper class, LCD1602Helper, is for controlling and interacting with an I2C LCD1602 display.
+
+
+
+
The class LEDHelper contains methods that pertain to the control of a LED.
+
+
+
+
Class for configuring multipin components.
+
+
+
+
The PhotoResistorHelper class is used to work with the functionalities of a Photo Resistor.
+
+
+
+
The Pi4JFactory class is responsible for creating all the beans for components that are being used.
+
+
+
+
The Pi4JMultipinFactory class is responsible for creating all the beans for all multi pin components that are being used.
+
+
+
+
The PIRSensorHelper class is used to initialize a PIR motion sensor.
+
+
+
+
The PushButtonHelper class is used to create a listener that determines when a 4 pin button is pressed.
+
+
+
+
The PwmConfiguration class handles the configuration of a pwm component.
+
+
+
+
This class handles the configuration of a PWM device that has multiple pins.
+
+
+
+
The RFIDHelper class is for interacting with an RFID scanner.
+
+
+
+
The RBGLEDHelper class handles all interactions with a RGB LED.
+
+
+
+
The RotaryEncoderHelper class initializes a rotary encoder component and returns the value of the encoder when called upon.
+
+
+
+
The SlideSwitchHelper class is used to initialize a slide switch.
+
+
+
+
This class handles the configuration of a SPI component.
+
+
+
+
The TouchSwitchHelper class is used to initialize a touch switch.
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/allpackages-index.html b/pi4micronaut-utils/src/docs/javadoc/allpackages-index.html
new file mode 100644
index 00000000..0cbebf57
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/allpackages-index.html
@@ -0,0 +1,71 @@
+
+
+
+
+All Packages (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/Application.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/Application.html
new file mode 100644
index 00000000..16cdbae7
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/Application.html
@@ -0,0 +1,179 @@
+
+
+
+
+Application (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Application
+
extends Object
+Runs the Micronaut framework in the Pi4Micronaut framework.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Concrete Methods
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Application
+public Application ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+main
+public static void main (String [] args)
+constructor
+
+Parameters:
+args
- None
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PIRSensorHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PIRSensorHelper.html
new file mode 100644
index 00000000..9b7775b4
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PIRSensorHelper.html
@@ -0,0 +1,242 @@
+
+
+
+
+PIRSensorHelper (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class PIRSensorHelper
+
extends Object
+The PIRSensorHelper class is used to initialize a PIR motion sensor.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
boolean
+
+
+
Shows if the PIR sensor detects movement or not.
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
PIRSensorHelper constructor
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
Adds an event listener to the PIR sensor.
+
+
void
+
+
+
Initializes the listener that keeps track of if the PIR sensor detects motion or not.
+
+
void
+
+
+
Removes the event listener from the PIR sensor.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+isMoving
+public boolean isMoving
+Shows if the PIR sensor detects movement or not.
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+initialize
+public void initialize ()
+Initializes the listener that keeps track of if the PIR sensor detects motion or not. It is automatically called when the PIRSensorHelper is instantiated.
+
+
+
+
+addEventListener
+public void addEventListener (com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
+Adds an event listener to the PIR sensor.
+
+Parameters:
+function
- A Pi4J DigitalStateChangeListener object.
+
+
+
+
+
+removeEventListener
+public void removeEventListener ()
+Removes the event listener from the PIR sensor.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PhotoResistorHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PhotoResistorHelper.html
new file mode 100644
index 00000000..3d060ba4
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PhotoResistorHelper.html
@@ -0,0 +1,298 @@
+
+
+
+
+PhotoResistorHelper (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class PhotoResistorHelper
+
extends Object
+The PhotoResistorHelper class is used to work with the functionalities of a Photo Resistor.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
boolean
+
+
+
To check if it is Dark.
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
PhotoResistorHelper (com.pi4j.io.gpio.digital.DigitalInput sensorInput,
+ com.pi4j.io.gpio.digital.DigitalOutput sensorOutput)
+
+
TouchSwitchHelper constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
Adds an event listener to the Photo Resistor.
+
+
int
+
+
+
void
+
+
+
Initializes the Photo Resistor and calls the updateDarkness function for every half second.
+
+
void
+
+
+
Removes the event listener from the Photo Resistor.
+
+
void
+
+
+
To set a threshold for Photo Resistor.
+
+
void
+
+
+
To set the Photo Resistor output to low for each event.
+
+
void
+
+
+
Updates the darknessValue of the Photo Resistor.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+isDark
+public boolean isDark
+To check if it is Dark.
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getDark
+public int getDark ()
+
+Returns:
+current darknessValue.
+
+
+
+
+
+initialize
+public void initialize ()
+Initializes the Photo Resistor and calls the updateDarkness function for every half second.
+
+
+
+
+updateDark
+public void updateDark ()
+Updates the darknessValue of the Photo Resistor.
+
+
+
+
+setToLow
+public void setToLow ()
+To set the Photo Resistor output to low for each event.
+
+
+
+
+setDarknessThreshold
+public void setDarknessThreshold (int darknessThreshold)
+To set a threshold for Photo Resistor.
+
+Parameters:
+darknessThreshold
- value is obtained from user.
+
+
+
+
+
+addEventListener
+public void addEventListener (com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
+Adds an event listener to the Photo Resistor.
+
+Parameters:
+function
- A Pi4J DigitalStateChangeListener object.
+
+
+
+
+
+removeEventListener
+public void removeEventListener ()
+Removes the event listener from the Photo Resistor.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PushButtonHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PushButtonHelper.html
new file mode 100644
index 00000000..172306c1
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PushButtonHelper.html
@@ -0,0 +1,246 @@
+
+
+
+
+PushButtonHelper (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class PushButtonHelper
+
extends Object
+The PushButtonHelper class is used to create a listener that determines when a 4 pin button is pressed.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+
Determines if the button is pressed.
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
The PushButtonHelper constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
Adds an EventListener to the PushButton.
+
+
void
+
+
+
Initializes the PushButton.
+
+
void
+
+
+
Removes an EvenListener from the button.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+isPressed
+
+Determines if the button is pressed.
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+initialize
+public void initialize ()
+Initializes the PushButton. Automatically called when the PushButton is created.
+
+
+
+
+addEventListener
+public void addEventListener (com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
+Adds an EventListener to the PushButton.
+
+Parameters:
+function
- A DigitalStateChangeListener Object.
+
+
+
+
+
+removeEventListener
+public void removeEventListener (com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
+Removes an EvenListener from the button.
+
+Parameters:
+function
- The listener to be removed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/RFidHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/RFidHelper.html
new file mode 100644
index 00000000..b4febcfd
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/RFidHelper.html
@@ -0,0 +1,238 @@
+
+
+
+
+RFidHelper (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class RFidHelper
+
extends Object
+The RFIDHelper class is for interacting with an RFID scanner.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
RFidHelper (com.pi4j.io.spi.SpiConfig config,
+ int reset,
+ com.pi4j.context.Context pi4jContext)
+
+
The RFidHelper constructor WITH the reset pin as a parameter.
+
+
RFidHelper (com.pi4j.io.spi.SpiConfig config,
+ com.pi4j.context.Context pi4jContext)
+
+
The RFidHelper constructor WITHOUT the reset pin as a parameter.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
When called, this method waits for any RFID card/fob to be scanned.
+
+
void
+
+
+
Resets the RFID scanner.
+
+
void
+
+
+
Writes data to an RFID fob.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+RFidHelper
+public RFidHelper (com.pi4j.io.spi.SpiConfig config,
+ int reset,
+ com.pi4j.context.Context pi4jContext)
+The RFidHelper constructor WITH the reset pin as a parameter.
+
+Parameters:
+config
- A Pi4J SPIConfig object which holds the SPI address and SPI Baud rate for RFID scanner.
+reset
- Defines the reset pin for the RFID scanner.
+pi4jContext
- The Pi4J context object.
+
+
+
+
+
+RFidHelper
+public RFidHelper (com.pi4j.io.spi.SpiConfig config,
+ com.pi4j.context.Context pi4jContext)
+The RFidHelper constructor WITHOUT the reset pin as a parameter.
+
+Parameters:
+config
- A Pi4J SPIConfig object which holds the SPI address and SPI Baud rate for RFID scanner.
+pi4jContext
- The Pi4J context object.
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+writeToCard
+public void writeToCard (Object data)
+Writes data to an RFID fob. This is the data that is returned when the fob is scanned by the scanner.
+
+Parameters:
+data
- Data to be written to an RFID fob. Typically, a string identifying the holder of the fob such as an identification number.
+
+
+
+
+
+readFromCard
+
+When called, this method waits for any RFID card/fob to be scanned. The data from the card is returned.
+
+Returns:
+The data read from the card/fob.
+
+
+
+
+
+resetScanner
+public void resetScanner ()
+Resets the RFID scanner.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/RotaryEncoderHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/RotaryEncoderHelper.html
new file mode 100644
index 00000000..702005d7
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/RotaryEncoderHelper.html
@@ -0,0 +1,198 @@
+
+
+
+
+RotaryEncoderHelper (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class RotaryEncoderHelper
+
extends Object
+The RotaryEncoderHelper class initializes a rotary encoder component and returns the value of the encoder when called upon.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
The RotaryEncoderHelper constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
int
+
+
+
Gets the value of the rotary encoder.
+
+
void
+
+
+
Initializes the listener that keeps track of the rotary encoder's position.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+RotaryEncoderHelper
+
+The RotaryEncoderHelper constructor.
+
+Parameters:
+multiPin
- A MultipinConfiguration
Object.
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+initialize
+public void initialize ()
+Initializes the listener that keeps track of the rotary encoder's position. Automatically called when the RotaryEncoderHelper is instantiated.
+
+
+
+
+getEncoderValue
+public int getEncoderValue ()
+Gets the value of the rotary encoder.
+
+Returns:
+The value of the rotary encoder.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/SlideSwitchHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/SlideSwitchHelper.html
new file mode 100644
index 00000000..f40e77ea
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/SlideSwitchHelper.html
@@ -0,0 +1,246 @@
+
+
+
+
+SlideSwitchHelper (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class SlideSwitchHelper
+
extends Object
+The SlideSwitchHelper class is used to initialize a slide switch.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
boolean
+
+
+
Shows if the slide switch is on.
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
SlideSwitchHelper constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
Adds an EvenListener to the slide switch.
+
+
void
+
+
+
Initializes the listener that keeps track of whether the slide switch is high/low.
+
+
void
+
+
+
Removes the EventListener from the slide switch.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+isOn
+public boolean isOn
+Shows if the slide switch is on.
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+initialize
+public void initialize ()
+Initializes the listener that keeps track of whether the slide switch is high/low. Automatically called when the SlideSwitchHelper is instantiated.
+
+
+
+
+addEventListener
+public void addEventListener (com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
+Adds an EvenListener to the slide switch.
+
+Parameters:
+function
- A Pi4J DigitalStateChangeListener object.
+
+
+
+
+
+removeEventListener
+public void removeEventListener (com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
+Removes the EventListener from the slide switch.
+
+Parameters:
+function
- A Pi4J DigitalStateChangeListener object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/TouchSwitchHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/TouchSwitchHelper.html
new file mode 100644
index 00000000..c02ad6d0
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/TouchSwitchHelper.html
@@ -0,0 +1,242 @@
+
+
+
+
+TouchSwitchHelper (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class TouchSwitchHelper
+
extends Object
+The TouchSwitchHelper class is used to initialize a touch switch.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
boolean
+
+
+
Shows if the touch switch has been touched.
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
TouchSwitchHelper constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
Adds an event listener to the touch switch.
+
+
void
+
+
+
Initializes the listener that keeps track of if the touch switch has been touched or not.
+
+
void
+
+
+
Removes the event listener from the touch switch.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+isTouched
+public boolean isTouched
+Shows if the touch switch has been touched.
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+initialize
+public void initialize ()
+Initializes the listener that keeps track of if the touch switch has been touched or not. It is automatically called when the TouchSwitchHelper is instantiated.
+
+
+
+
+addEventListener
+public void addEventListener (com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
+Adds an event listener to the touch switch.
+
+Parameters:
+function
- A Pi4J DigitalStateChangeListener object.
+
+
+
+
+
+removeEventListener
+public void removeEventListener ()
+Removes the event listener from the touch switch.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-summary.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-summary.html
new file mode 100644
index 00000000..7d89f387
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-summary.html
@@ -0,0 +1,131 @@
+
+
+
+
+com.opensourcewithslu.inputdevices (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package com.opensourcewithslu.inputdevices
+
+
+
+
+
+
+
+
Classes
+
+
+
+
+
+
The PhotoResistorHelper class is used to work with the functionalities of a Photo Resistor.
+
+
+
+
The PIRSensorHelper class is used to initialize a PIR motion sensor.
+
+
+
+
The PushButtonHelper class is used to create a listener that determines when a 4 pin button is pressed.
+
+
+
+
The RFIDHelper class is for interacting with an RFID scanner.
+
+
+
+
The RotaryEncoderHelper class initializes a rotary encoder component and returns the value of the encoder when called upon.
+
+
+
+
The SlideSwitchHelper class is used to initialize a slide switch.
+
+
+
+
The TouchSwitchHelper class is used to initialize a touch switch.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-tree.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-tree.html
new file mode 100644
index 00000000..3ff1e156
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-tree.html
@@ -0,0 +1,76 @@
+
+
+
+
+com.opensourcewithslu.inputdevices Class Hierarchy (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/ActiveBuzzerHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/ActiveBuzzerHelper.html
new file mode 100644
index 00000000..a94c357f
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/ActiveBuzzerHelper.html
@@ -0,0 +1,265 @@
+
+
+
+
+ActiveBuzzerHelper (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class ActiveBuzzerHelper
+
extends Object
+The ActiveBuzzerHelper class contains methods that pertain to the control of the active buzzer.
+
+ IMPORTANT NOTE: WIRING MUST BE DIRECT. USAGE OF TRANSISTOR ALTERS THE FUNCTIONALITIES OF THE HELPER.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
protected boolean
+
+
+
To check if the buzzer is active or not
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
BuzzerHelper constructor
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
Turns the active buzzer off.
+
+
void
+
+
+
Turns the active buzzer on by setting the duty cycle is 100 and frequency to 440hz.
+
+
void
+
+
+
Beep powers on, plays a single tone from the active buzzer for 2 seconds then powers down.
+
+
void
+
+
+
Intermittent tone will play a tone for a 20 seconds duration.
+
+
void
+
+
+
Uses the active buzzer on and off function to beep the word pi in morse code.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+actBuzzCheck
+protected boolean actBuzzCheck
+To check if the buzzer is active or not
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+ActiveBuzzerHelper
+public ActiveBuzzerHelper (com.pi4j.io.pwm.Pwm activeBuzzer)
+BuzzerHelper constructor
+
+Parameters:
+activeBuzzer
- instance of a Pwm object
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+activeBuzzerOn
+public void activeBuzzerOn ()
+Turns the active buzzer on by setting the duty cycle is 100 and frequency to 440hz.
+
+
+
+
+activeBuzzerOff
+public void activeBuzzerOff ()
+Turns the active buzzer off.
+
+
+
+
+beep
+public void beep ()
+Beep powers on, plays a single tone from the active buzzer for 2 seconds then powers down.
+
+
+
+
+intermittentTone
+public void intermittentTone ()
+Intermittent tone will play a tone for a 20 seconds duration. During this duration the
+ buzzer will be on for 10 seconds and off for 10 seconds.
+
+
+
+
+morseCodeTone
+public void morseCodeTone ()
+Uses the active buzzer on and off function to beep the word pi in morse code.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/LCD1602Helper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/LCD1602Helper.html
new file mode 100644
index 00000000..9b9bd055
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/LCD1602Helper.html
@@ -0,0 +1,252 @@
+
+
+
+
+LCD1602Helper (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class LCD1602Helper
+
extends Object
+This helper class, LCD1602Helper, is for controlling and interacting with an I2C LCD1602 display.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
LCD1602Helper (com.pi4j.io.i2c.I2CConfig i2CConfig,
+ com.pi4j.context.Context pi4jContext)
+
+
The LCD1602Helper constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
Clears the display of text.
+
+
void
+
+
+
Clears the text of the specified line.
+
+
void
+
+
+
Setting the backlight state of the LCD based off the boolean input.
+
+
void
+
+
+
Writes a String to the display.
+
+
void
+
+
+
Writes a String to the defined line.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+LCD1602Helper
+public LCD1602Helper (com.pi4j.io.i2c.I2CConfig i2CConfig,
+ com.pi4j.context.Context pi4jContext)
+The LCD1602Helper constructor.
+
+Parameters:
+i2CConfig
- Unused parameter.
+pi4jContext
- Context used to create LCD display object.
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+writeText
+public void writeText (String text)
+Writes a String to the display.
+
+Parameters:
+text
- String object.
+
+
+
+
+
+writeTextAtLine
+public void writeTextAtLine (String text,
+ int line)
+Writes a String to the defined line.
+
+Parameters:
+text
- String object to be displayed.
+line
- Line on which the String is written.
+
+
+
+
+
+setBackLight
+public void setBackLight (boolean state)
+Setting the backlight state of the LCD based off the boolean input. If true, then the backlight is set as on.
+
+Parameters:
+state
- Boolean input to determine backlight state.
+
+
+
+
+
+clearDisplay
+public void clearDisplay ()
+Clears the display of text.
+
+
+
+
+clearLine
+public void clearLine (int line)
+Clears the text of the specified line.
+
+Parameters:
+line
- The line of which text will be cleared.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/LEDHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/LEDHelper.html
new file mode 100644
index 00000000..cc847812
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/LEDHelper.html
@@ -0,0 +1,206 @@
+
+
+
+
+LEDHelper (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class LEDHelper
+
extends Object
+The class LEDHelper contains methods that pertain to the control of a LED.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
LEDHelper (com.pi4j.io.gpio.digital.DigitalOutput ledOutput)
+
+
LEGHelper constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
Turns off the LED by setting the DigitalOutput object to low.
+
+
void
+
+
+
Turns on the LED by setting the DigitalOutput object to high.
+
+
void
+
+
+
Switches the state of the LED.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+LEDHelper
+public LEDHelper (com.pi4j.io.gpio.digital.DigitalOutput ledOutput)
+LEGHelper constructor.
+
+Parameters:
+ledOutput
- An instance of a Pi4J DigitalOutput object.
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+ledOn
+public void ledOn ()
+Turns on the LED by setting the DigitalOutput object to high.
+
+
+
+
+ledOff
+public void ledOff ()
+Turns off the LED by setting the DigitalOutput object to low.
+
+
+
+
+switchState
+public void switchState ()
+Switches the state of the LED. If the LED is on, the LED is turned off and vice versa.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/RGBLEDHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/RGBLEDHelper.html
new file mode 100644
index 00000000..fdf75d2a
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/RGBLEDHelper.html
@@ -0,0 +1,369 @@
+
+
+
+
+RGBLEDHelper (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class RGBLEDHelper
+
extends Object
+The RBGLEDHelper class handles all interactions with a RGB LED.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
The RGBLEDHelper constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
Turns off the RGB LED.
+
+
void
+
+
+
Turns on the RGB LED with default RGB values of 100,100,100 and frequencies of 200 Hertz.
+
+
void
+
+
+
Sets the blue value of the LED.
+
+
void
+
+
+
Sets the blue value and frequency of the LED.
+
+
void
+
+
+
Sets the color of the LED based of inputted RGB values.
+
+
void
+
setColor (int[] colors,
+ int[] frequency)
+
+
Sets the color of the LED using the array of RGB values and an array of frequencies.
+
+
void
+
+
+
Setting the color of the LED using a hexadecimal value.
+
+
void
+
+
+
Setting the color of the LED using a hexadecimal value and an array of frequencies.
+
+
void
+
+
+
Sets the green value of the LED.
+
+
void
+
+
+
Sets the green value and frequency of the LED.
+
+
void
+
+
+
Sets the red value of the LED.
+
+
void
+
setRed (int red,
+ int frequency)
+
+
Sets the red value and frequency of the LED.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+setColor
+public void setColor (int[] colors)
+Sets the color of the LED based of inputted RGB values. Set with a default frequency of 200 Hertz.
+
+Parameters:
+colors
- RGB values in an array. [Red,Green,Blue].
+
+
+
+
+
+setColor
+public void setColor (int[] colors,
+ int[] frequency)
+Sets the color of the LED using the array of RGB values and an array of frequencies.
+
+Parameters:
+colors
- RGB values in an array. [Red,Green,Blue].
+frequency
- Frequency values(in Hertz) for the corresponding RGB value. [Red frequency, Green frequency, Blue frequency]
+
+
+
+
+
+setColorHex
+public void setColorHex (String hex)
+Setting the color of the LED using a hexadecimal value. Default frequency of 200 Hertz is used.
+
+Parameters:
+hex
- Hexadecimal number optionally prefixed by 0x.
+
+
+
+
+
+setColorHex
+public void setColorHex (String hex,
+ int[] frequency)
+Setting the color of the LED using a hexadecimal value and an array of frequencies.
+
+Parameters:
+hex
- Hexadecimal number optionally prefixed by 0x.
+frequency
- Frequency values(in Hertz) for the corresponding RGB value. [Red frequency, Green frequency, Blue frequency]
+
+
+
+
+
+setRed
+public void setRed (int red)
+Sets the red value of the LED. Default 200 Hertz frequency used.
+
+Parameters:
+red
- Integer value representing the red in the RGB value of the LED.
+
+
+
+
+
+setRed
+public void setRed (int red,
+ int frequency)
+Sets the red value and frequency of the LED.
+
+Parameters:
+red
- Integer value representing the red in the RGB value of the LED.
+frequency
- Frequency of the red value in Hertz.
+
+
+
+
+
+setBlue
+public void setBlue (int blue)
+Sets the blue value of the LED. Default 200 Hertz frequency used.
+
+Parameters:
+blue
- Integer value representing the blue in the RGB value of the LED.
+
+
+
+
+
+setBlue
+public void setBlue (int blue,
+ int frequency)
+Sets the blue value and frequency of the LED.
+
+Parameters:
+blue
- Integer value representing the blue in the RGB value of the LED.
+frequency
- Frequency of the blue value in Hertz.
+
+
+
+
+
+setGreen
+public void setGreen (int green)
+Sets the green value of the LED. Default 200 Hertz frequency used.
+
+Parameters:
+green
- Integer value representing the green in the RGB value of the LED.
+
+
+
+
+
+setGreen
+public void setGreen (int green,
+ int frequency)
+Sets the green value and frequency of the LED.
+
+Parameters:
+green
- Integer value representing the green in the RGB value of the LED.
+frequency
- Frequency of the green value in Hertz.
+
+
+
+
+
+ledOff
+public void ledOff ()
+Turns off the RGB LED.
+
+
+
+
+ledOn
+public void ledOn ()
+Turns on the RGB LED with default RGB values of 100,100,100 and frequencies of 200 Hertz.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-summary.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-summary.html
new file mode 100644
index 00000000..6c2094e5
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-summary.html
@@ -0,0 +1,119 @@
+
+
+
+
+com.opensourcewithslu.outputdevices (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package com.opensourcewithslu.outputdevices
+
+
+
+
+
+
+
+
Classes
+
+
+
+
+
+
The ActiveBuzzerHelper class contains methods that pertain to the control of the active buzzer.
+
+
+
+
This helper class, LCD1602Helper, is for controlling and interacting with an I2C LCD1602 display.
+
+
+
+
The class LEDHelper contains methods that pertain to the control of a LED.
+
+
+
+
The RBGLEDHelper class handles all interactions with a RGB LED.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-tree.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-tree.html
new file mode 100644
index 00000000..ad80d8aa
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-tree.html
@@ -0,0 +1,73 @@
+
+
+
+
+com.opensourcewithslu.outputdevices Class Hierarchy (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-summary.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-summary.html
new file mode 100644
index 00000000..797a89f1
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-summary.html
@@ -0,0 +1,107 @@
+
+
+
+
+com.opensourcewithslu (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package com.opensourcewithslu
+
+
+
+
+
+
+
+
Classes
+
+
+
+
+
+
Runs the Micronaut framework in the Pi4Micronaut framework.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-tree.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-tree.html
new file mode 100644
index 00000000..1de68afb
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-tree.html
@@ -0,0 +1,70 @@
+
+
+
+
+com.opensourcewithslu Class Hierarchy (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalInputConfiguration.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalInputConfiguration.html
new file mode 100644
index 00000000..0fae3e78
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalInputConfiguration.html
@@ -0,0 +1,349 @@
+
+
+
+
+DigitalInputConfiguration (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+@Prototype
+@EachProperty("pi4j.digital-input")
+ public class DigitalInputConfiguration
+
extends Object
+This class handles the configuration of a digital input component.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Constructor for the DigitalInputConfiguration.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
int
+
+
+
Gets the pin address for the component.
+
+
+
+
+
Gets the current debounce value for the component.
+
+
+
+
+
Gets the id of the component.
+
+
+
+
+
Gets the name of the component.
+
+
+
+
+
Gets the provider for the component.
+
+
com.pi4j.io.gpio.digital.PullResistance
+
+
+
Gets the pull resistance for the component.
+
+
void
+
+
+
void
+
+
+
Sets the debounce of the component.
+
+
void
+
+
+
Sets the name of the component.
+
+
void
+
+
+
void
+
setPull (com.pi4j.io.gpio.digital.PullResistance pull)
+
+
Sets the pull resistance for the component.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+DigitalInputConfiguration
+public DigitalInputConfiguration (@Parameter
+ String id)
+Constructor for the DigitalInputConfiguration.
+
+Parameters:
+id
- The configuration id as defined in the application.yml
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getId
+
+Gets the id of the component.
+
+Returns:
+The id of the component.
+
+
+
+
+
+getName
+
+Gets the name of the component.
+
+Returns:
+The name of the component.
+
+
+
+
+
+setName
+public void setName (String name)
+Sets the name of the component.
+
+Parameters:
+name
- The string name to replace the existing name.
+
+
+
+
+
+getDebounce
+public Long getDebounce ()
+Gets the current debounce value for the component.
+
+Returns:
+Long type representing the debounce of the component.
+
+
+
+
+
+setDebounce
+public void setDebounce (Long debounce)
+Sets the debounce of the component. Replaces existing debounce.
+
+Parameters:
+debounce
- New debounce of type Long,
+
+
+
+
+
+getPull
+public com.pi4j.io.gpio.digital.PullResistance getPull ()
+Gets the pull resistance for the component.
+
+Returns:
+The PullResistance enumeration.
+
+
+
+
+
+setPull
+public void setPull (com.pi4j.io.gpio.digital.PullResistance pull)
+Sets the pull resistance for the component.
+
+Parameters:
+pull
- The PullResistance enum that will become the new pull resistance for the component.
+
+
+
+
+
+getAddress
+public int getAddress ()
+Gets the pin address for the component.
+
+Returns:
+An array of the pin addresses.
+
+
+
+
+
+setAddress
+public void setAddress (int address)
+Sets the pin address.
+
+Parameters:
+address
- Integer representing the new pin address.
+
+
+
+
+
+getProvider
+
+Gets the provider for the component.
+
+Returns:
+A String representation of the provider.
+
+
+
+
+
+setProvider
+public void setProvider (String provider)
+Sets the provider.
+
+Parameters:
+provider
- The new provider for the component.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalOutputConfiguration.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalOutputConfiguration.html
new file mode 100644
index 00000000..787295f0
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalOutputConfiguration.html
@@ -0,0 +1,349 @@
+
+
+
+
+DigitalOutputConfiguration (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+@Prototype
+@EachProperty("pi4j.digital-output")
+ public class DigitalOutputConfiguration
+
extends Object
+This class handles the configuration of a digital output component.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
The DigitalOutputConfiguration constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
int
+
+
+
Gets the pin address for the component.
+
+
+
+
+
Gets the id of the component.
+
+
com.pi4j.io.gpio.digital.DigitalState
+
+
+
Gets the initial state of the component.
+
+
+
+
+
Gets the name of the component.
+
+
+
+
+
Gets the provider for the component.
+
+
com.pi4j.io.gpio.digital.DigitalState
+
+
+
Gets the shutdown state of the component.
+
+
void
+
+
+
void
+
setInitial (com.pi4j.io.gpio.digital.DigitalState initial)
+
+
Sets the initial state for the component.
+
+
void
+
+
+
Sets the name of the component.
+
+
void
+
+
+
void
+
setShutdown (com.pi4j.io.gpio.digital.DigitalState shutdown)
+
+
Sets the shutdown state for the component.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+DigitalOutputConfiguration
+public DigitalOutputConfiguration (@Parameter
+ String id)
+The DigitalOutputConfiguration constructor.
+
+Parameters:
+id
- The configuration id as defined in the application.yml.
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getId
+
+Gets the id of the component.
+
+Returns:
+The id of the component.
+
+
+
+
+
+getName
+
+Gets the name of the component.
+
+Returns:
+The String name of the component.
+
+
+
+
+
+setName
+public void setName (String name)
+Sets the name of the component.
+
+Parameters:
+name
- The String that the name will be set as.
+
+
+
+
+
+getInitial
+public com.pi4j.io.gpio.digital.DigitalState getInitial ()
+Gets the initial state of the component.
+
+Returns:
+The initial state of the component.
+
+
+
+
+
+setInitial
+public void setInitial (com.pi4j.io.gpio.digital.DigitalState initial)
+Sets the initial state for the component.
+
+Parameters:
+initial
- The Digital state that the component will start was.
+
+
+
+
+
+getShutdown
+public com.pi4j.io.gpio.digital.DigitalState getShutdown ()
+Gets the shutdown state of the component.
+
+Returns:
+The digital state of the component.
+
+
+
+
+
+setShutdown
+public void setShutdown (com.pi4j.io.gpio.digital.DigitalState shutdown)
+Sets the shutdown state for the component.
+
+Parameters:
+shutdown
- DigitalState enum.
+
+
+
+
+
+getAddress
+public int getAddress ()
+Gets the pin address for the component.
+
+Returns:
+An array of the pin addresses.
+
+
+
+
+
+setAddress
+public void setAddress (int address)
+Sets the pin address.
+
+Parameters:
+address
- Integer representing the new pin address.
+
+
+
+
+
+getProvider
+
+Gets the provider for the component.
+
+Returns:
+A String representation of the provider.
+
+
+
+
+
+setProvider
+public void setProvider (String provider)
+Sets the provider.
+
+Parameters:
+provider
- The new provider for the component.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/DigitalInputMultiPinConfiguration.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/DigitalInputMultiPinConfiguration.html
new file mode 100644
index 00000000..98a6870f
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/DigitalInputMultiPinConfiguration.html
@@ -0,0 +1,348 @@
+
+
+
+
+DigitalInputMultiPinConfiguration (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+java.lang.Object
+
com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration
+
+
+
+@EachProperty("pi4j.multi-digital-input")
+ public class DigitalInputMultiPinConfiguration
+
extends Object
+This class handles the configuration of a digital input component that has multiple pins.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
The DigitalInputMultiPinConfiguration constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
int[]
+
+
+
Gets the pin addresses for the component.
+
+
long[]
+
+
+
Gets the current debounce values for the component.
+
+
+
+
+
Gets the id of the component.
+
+
+
+
+
Gets the name of the component.
+
+
+
+
+
Gets the provider for the component.
+
+
com.pi4j.io.gpio.digital.PullResistance[]
+
+
+
Gets the pull resistance for the component.
+
+
void
+
+
+
Sets the pin addresses for the component.
+
+
void
+
+
+
Sets the debounces for the component.
+
+
void
+
+
+
Sets the name of the component.
+
+
void
+
+
+
void
+
+
+
Sets all the pull resistance for the components.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+DigitalInputMultiPinConfiguration
+public DigitalInputMultiPinConfiguration (@Parameter
+ String id)
+The DigitalInputMultiPinConfiguration constructor.
+
+Parameters:
+id
- The configuration id as defined in the application.yml
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getId
+
+Gets the id of the component.
+
+Returns:
+The id of the component.
+
+
+
+
+
+getName
+
+Gets the name of the component.
+
+Returns:
+The name of the component.
+
+
+
+
+
+setName
+public void setName (String name)
+Sets the name of the component.
+
+Parameters:
+name
- The string name to replace the existing name.
+
+
+
+
+
+getAddresses
+public int[] getAddresses ()
+Gets the pin addresses for the component.
+
+Returns:
+An array of the pin addresses.
+
+
+
+
+
+setAddresses
+public void setAddresses (String addresses)
+Sets the pin addresses for the component. All previously existing address are replaced.
+
+Parameters:
+addresses
- Pin addresses separated by a comma.
+
+
+
+
+
+getPulls
+public com.pi4j.io.gpio.digital.PullResistance[] getPulls ()
+Gets the pull resistance for the component.
+
+Returns:
+The PullResistance enumerations.
+
+
+
+
+
+setPulls
+public void setPulls (String all_pulls)
+Sets all the pull resistance for the components.
+
+Parameters:
+all_pulls
- String of pull resistances separated by commas. Pull down resistance should be formatted as PULL_DOWN. Pull up as PULL_UP.
+
+
+
+
+
+getDebounces
+public long[] getDebounces ()
+Gets the current debounce values for the component.
+
+Returns:
+The array of debounce values of type long.
+
+
+
+
+
+setDebounces
+public void setDebounces (String debounces)
+Sets the debounces for the component. Replaces all the existing debounces.
+
+Parameters:
+debounces
- String representing the dounces for the component. Each debounce seperated by a comma.
+
+
+
+
+
+getProvider
+
+Gets the provider for the component.
+
+Returns:
+A String representation of the provider.
+
+
+
+
+
+setProvider
+public void setProvider (String provider)
+Sets the provider.
+
+Parameters:
+provider
- The new provider for the component.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/PwmMultiPinConfiguration.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/PwmMultiPinConfiguration.html
new file mode 100644
index 00000000..1c2380c8
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/PwmMultiPinConfiguration.html
@@ -0,0 +1,380 @@
+
+
+
+
+PwmMultiPinConfiguration (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+java.lang.Object
+
com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+
+
+@EachProperty("pi4j.multi-pwm")
+ public class PwmMultiPinConfiguration
+
extends Object
+This class handles the configuration of a PWM device that has multiple pins.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
The PwmMultiPinConfiguration constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
int[]
+
+
+
Gets the pin address for the component.
+
+
+
+
+
Gets the id of the component.
+
+
int[]
+
+
+
Gets the initial states that the component is in when first initialized.
+
+
+
+
+
Gets the name of the component.
+
+
+
+
+
Gets the provider for the component.
+
+
com.pi4j.io.pwm.PwmType[]
+
+
+
Gets the PWM types of the component.
+
+
int[]
+
+
+
Gets the shutdown states for the component.
+
+
void
+
+
+
Sets the pin addresses for the component.
+
+
void
+
+
+
Sets the initial states for the component.
+
+
void
+
+
+
Sets the name of the component.
+
+
void
+
+
+
void
+
+
+
Sets the PWM types for the component.
+
+
void
+
+
+
Sets the shutdown states for the component.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+PwmMultiPinConfiguration
+public PwmMultiPinConfiguration (@Parameter
+ String id)
+The PwmMultiPinConfiguration constructor.
+
+Parameters:
+id
- The configuration id as defined in the application.yml
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getId
+
+Gets the id of the component.
+
+Returns:
+The id of the component.
+
+
+
+
+
+getName
+
+Gets the name of the component.
+
+Returns:
+The name of the component.
+
+
+
+
+
+setName
+public void setName (String name)
+Sets the name of the component.
+
+Parameters:
+name
- The string name to replace the existing name.
+
+
+
+
+
+getAddresses
+public int[] getAddresses ()
+Gets the pin address for the component.
+
+Returns:
+An array of the pin addresses.
+
+
+
+
+
+setAddresses
+public void setAddresses (String addresses)
+Sets the pin addresses for the component. All previously existing address are replaced.
+
+Parameters:
+addresses
- Pin addresses separated by a comma.
+
+
+
+
+
+getPwmTypes
+public com.pi4j.io.pwm.PwmType[] getPwmTypes ()
+Gets the PWM types of the component.
+
+Returns:
+PWMType enum.
+
+
+
+
+
+setPwmTypes
+public void setPwmTypes (String pwmTypes)
+Sets the PWM types for the component.
+
+Parameters:
+pwmTypes
- String of PWM types separated by commas. Software should be formatted as SOFTWARE. Hardware as HARDWARE.
+
+
+
+
+
+getInitals
+public int[] getInitals ()
+Gets the initial states that the component is in when first initialized.
+
+Returns:
+Array of integers representing the initial state for each pin.
+
+
+
+
+
+setInitials
+public void setInitials (String initials)
+Sets the initial states for the component.
+
+Parameters:
+initials
- String of states separated by commas.
+
+
+
+
+
+getShutdowns
+public int[] getShutdowns ()
+Gets the shutdown states for the component.
+
+Returns:
+Array of integers representing the shutdowns.
+
+
+
+
+
+setShutdowns
+public void setShutdowns (String shutdowns)
+Sets the shutdown states for the component. Existing shutdowns are replaced.
+
+Parameters:
+shutdowns
- String of shutdowns separated by commas.
+
+
+
+
+
+getProvider
+
+Gets the provider for the component.
+
+Returns:
+A String representation of the provider.
+
+
+
+
+
+setProvider
+public void setProvider (String provider)
+Sets the provider.
+
+Parameters:
+provider
- The new provider for the component.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/package-summary.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/package-summary.html
new file mode 100644
index 00000000..00d5c56f
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/package-summary.html
@@ -0,0 +1,107 @@
+
+
+
+
+com.opensourcewithslu.utilities.MultiPinConfigs (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package com.opensourcewithslu.utilities.MultiPinConfigs
+
+
+
+
+
+
+
+
Classes
+
+
+
+
+
+
This class handles the configuration of a digital input component that has multiple pins.
+
+
+
+
This class handles the configuration of a PWM device that has multiple pins.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/package-tree.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/package-tree.html
new file mode 100644
index 00000000..fc6b9f22
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/package-tree.html
@@ -0,0 +1,71 @@
+
+
+
+
+com.opensourcewithslu.utilities.MultiPinConfigs Class Hierarchy (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultipinConfiguration.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultipinConfiguration.html
new file mode 100644
index 00000000..d1204612
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultipinConfiguration.html
@@ -0,0 +1,206 @@
+
+
+
+
+MultipinConfiguration (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+@Prototype
+ public class MultipinConfiguration
+
extends Object
+Class for configuring multipin components.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
The MultipinConfiguration constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
Gets the components that are part of the overall component.
+
+
+
+
+
Gets the id of the component.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+MultipinConfiguration
+public MultipinConfiguration (String id,
+ Object [] components)
+The MultipinConfiguration constructor.
+
+Parameters:
+id
- The configuration id as defined in the application.yml
+components
- The array of components that are a part of the multipin component.
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getId
+
+Gets the id of the component.
+
+Returns:
+The id of the component.
+
+
+
+
+
+getComponents
+public Object [] getComponents ()
+Gets the components that are part of the overall component.
+
+Returns:
+an array of component objects.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JFactory.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JFactory.html
new file mode 100644
index 00000000..58f64459
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JFactory.html
@@ -0,0 +1,297 @@
+
+
+
+
+Pi4JFactory (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+@Factory
+ public class Pi4JFactory
+
extends Object
+The Pi4JFactory class is responsible for creating all the beans for components that are being used.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
com.pi4j.io.gpio.digital.DigitalInput
+
+
+
Creates a DigitalInput object for digital input components.
+
+
com.pi4j.io.gpio.digital.DigitalOutput
+
+
+
Creates a DigitalOutput object for digital output components.
+
+
com.pi4j.io.i2c.I2CConfig
+
+
+
Creates an I2CConfigBuilder Object for components that are I2C.
+
+
com.pi4j.context.Context
+
+
+
This creates the Pi4J Context that is used to create all the beans for the individual components.
+
+
com.pi4j.io.pwm.Pwm
+
+
+
Creates a PWM object for components that are pwm.
+
+
com.pi4j.io.spi.SpiConfig
+
+
+
Creates an SpiConfigBuilder object for components that are SPI.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Pi4JFactory
+public Pi4JFactory ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+createPi4jContext
+@Singleton
+@Bean(preDestroy="shutdown")
+ public com.pi4j.context.Context createPi4jContext ()
+This creates the Pi4J Context that is used to create all the beans for the individual components.
+
+Returns:
+A Pi4J Context
+
+
+
+
+
+createDigitalOutput
+
+Creates a DigitalOutput object for digital output components.
+
+Parameters:
+config
- DigitalOutputConfiguration
Object.
+pi4jContext
- The Pi4J Context
.
+Returns:
+A DigitalOutput Object.
+
+
+
+
+
+createDigitalInput
+
+Creates a DigitalInput object for digital input components.
+
+Parameters:
+config
- DigitalInputConfiguration
Object.
+pi4jContext
- The Pi4J Context
.
+Returns:
+A DigitalInput Object.
+
+
+
+
+
+createPwm
+
+Creates a PWM object for components that are pwm.
+
+Parameters:
+config
- PwmConfiguration
Object.
+pi4jContext
- The Pi4J Context
.
+Returns:
+A PWM Object.
+
+
+
+
+
+createSpi
+
+Creates an SpiConfigBuilder object for components that are SPI.
+
+Parameters:
+config
- SpiConfiguration
Object.
+pi4jContext
- The Pi4J Context
.
+Returns:
+A SpiConfigBuilder Object.
+
+
+
+
+
+createI2C
+
+Creates an I2CConfigBuilder Object for components that are I2C.
+
+Parameters:
+config
- i2cConfiguration
Object.
+pi4jContext
- The Pi4J Context
.
+Returns:
+A I2CConfigBuilder Object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JMultipinFactory.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JMultipinFactory.html
new file mode 100644
index 00000000..a6b89ecf
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JMultipinFactory.html
@@ -0,0 +1,209 @@
+
+
+
+
+Pi4JMultipinFactory (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+@Prototype
+@Factory
+ public class Pi4JMultipinFactory
+
extends Object
+The Pi4JMultipinFactory class is responsible for creating all the beans for all multi pin components that are being used.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
Creates a MultipinConfiguration object for a multi pin digital input component.
+
+
+
+
+
Creates a MultipinConfiguration object for a multi pin pwm component.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Pi4JMultipinFactory
+public Pi4JMultipinFactory ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+multiPinInput
+
+Creates a MultipinConfiguration object for a multi pin digital input component.
+
+Parameters:
+config
- DigitalInputMultiPinConfiguration
Object.
+pi4jContext
- The Pi4J Context
.
+Returns:
+A MultipinConfiguration object.
+
+
+
+
+
+multiPinPwm
+
+Creates a MultipinConfiguration object for a multi pin pwm component.
+
+Parameters:
+config
- PwmMultiPinConfiguration
Object.
+pi4jContext
- The Pi4J Context
.
+Returns:
+A MultipinConfiguration object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/PwmConfiguration.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/PwmConfiguration.html
new file mode 100644
index 00000000..6b4c61eb
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/PwmConfiguration.html
@@ -0,0 +1,381 @@
+
+
+
+
+PwmConfiguration (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+@Prototype
+@EachProperty("pi4j.pwm")
+ public class PwmConfiguration
+
extends Object
+The PwmConfiguration class handles the configuration of a pwm component.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
PwmConfiguration constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
int
+
+
+
Gets the pin address for the component.
+
+
+
+
+
Gets the id of the component.
+
+
int
+
+
+
Gets the initial state that the component is in when first initialized.
+
+
+
+
+
Gets the name of the component.
+
+
+
+
+
Gets the provider for the component.
+
+
com.pi4j.io.pwm.PwmType
+
+
+
Gets the pwm type of the component.
+
+
int
+
+
+
Gets the shutdown state for the component.
+
+
void
+
+
+
Sets a new pin address for the component.
+
+
void
+
+
+
Sets the initial state that the component will be in when first initialized.
+
+
void
+
+
+
Sets the name of the component.
+
+
void
+
+
+
Sets the provider of the component.
+
+
void
+
+
+
void
+
+
+
Sets the shutdown state for the component.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+PwmConfiguration
+public PwmConfiguration (@Parameter
+ String id)
+PwmConfiguration constructor.
+
+Parameters:
+id
- The configuration id as defined in the application.yml
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getId
+
+Gets the id of the component.
+
+Returns:
+The id of the component.
+
+
+
+
+
+getName
+
+Gets the name of the component.
+
+Returns:
+The name of the component.
+
+
+
+
+
+setName
+public void setName (String name)
+Sets the name of the component.
+
+Parameters:
+name
- The string name to replace the existing name.
+
+
+
+
+
+getAddress
+public int getAddress ()
+Gets the pin address for the component.
+
+Returns:
+The address as an integer.
+
+
+
+
+
+setAddress
+public void setAddress (int address)
+Sets a new pin address for the component.
+
+Parameters:
+address
- An integer representing the new pin address.
+
+
+
+
+
+getInital
+public int getInital ()
+Gets the initial state that the component is in when first initialized.
+
+Returns:
+The state as an integer.
+
+
+
+
+
+setInital
+public void setInital (int inital)
+Sets the initial state that the component will be in when first initialized.
+
+Parameters:
+inital
- The startup state as an integer.
+
+
+
+
+
+getShutdown
+public int getShutdown ()
+Gets the shutdown state for the component.
+
+Returns:
+The shutdown state as an integer.
+
+
+
+
+
+setShutdown
+public void setShutdown (int shutdown)
+Sets the shutdown state for the component.
+
+Parameters:
+shutdown
- Integer representing the new shutdown state.
+
+
+
+
+
+getPwmType
+public com.pi4j.io.pwm.PwmType getPwmType ()
+Gets the pwm type of the component.
+
+Returns:
+A PwmType object.
+
+
+
+
+
+setPwmType
+public void setPwmType (String pwmType)
+Sets the pwm type.
+
+Parameters:
+pwmType
- A string representing the new pwm type. Either SOFTWARE or HARDWARE.
+
+
+
+
+
+getProvider
+
+Gets the provider for the component.
+
+Returns:
+The provider as a String.
+
+
+
+
+
+setProvider
+public void setProvider (String provider)
+Sets the provider of the component.
+
+Parameters:
+provider
- The new provider as a String.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/SpiConfiguration.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/SpiConfiguration.html
new file mode 100644
index 00000000..eeaab827
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/SpiConfiguration.html
@@ -0,0 +1,317 @@
+
+
+
+
+SpiConfiguration (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+@Prototype
+@EachProperty("pi4j.spi")
+ public class SpiConfiguration
+
extends Object
+This class handles the configuration of a SPI component.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
The SpiConfiguration constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
int
+
+
+
Gets the baud rate for the component.
+
+
int
+
+
+
Gets the channel for the component.
+
+
+
+
+
Gets the id of the component.
+
+
com.pi4j.io.spi.SpiMode
+
+
+
Gets the SPI mode for the component.
+
+
+
+
+
Gets the name of the component.
+
+
void
+
+
+
Sets the baud rate for the component.
+
+
void
+
+
+
Sets a new channel for the component.
+
+
void
+
setMode (com.pi4j.io.spi.SpiMode mode)
+
+
Sets the SPI mode for the component.
+
+
void
+
+
+
Sets the name of the component.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+SpiConfiguration
+public SpiConfiguration (@Parameter
+ String id)
+The SpiConfiguration constructor.
+
+Parameters:
+id
- The configuration id as defined in the application.yml
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getId
+
+Gets the id of the component.
+
+Returns:
+The id of the component.
+
+
+
+
+
+getName
+
+Gets the name of the component.
+
+Returns:
+The name of the component.
+
+
+
+
+
+setName
+public void setName (String name)
+Sets the name of the component.
+
+Parameters:
+name
- The string name to replace the existing name.
+
+
+
+
+
+getChannel
+public int getChannel ()
+Gets the channel for the component.
+
+Returns:
+An integer representing the channel.
+
+
+
+
+
+setChannel
+public void setChannel (int channel)
+Sets a new channel for the component.
+
+Parameters:
+channel
- An integer representing the new channel.
+
+
+
+
+
+getMode
+public com.pi4j.io.spi.SpiMode getMode ()
+Gets the SPI mode for the component.
+
+Returns:
+A SpiMode enum.
+
+
+
+
+
+setMode
+public void setMode (com.pi4j.io.spi.SpiMode mode)
+Sets the SPI mode for the component.
+
+Parameters:
+mode
- An SpiMode object.
+
+
+
+
+
+getBaud
+public int getBaud ()
+Gets the baud rate for the component.
+
+Returns:
+the baud rate as an integer.
+
+
+
+
+
+setBaud
+public void setBaud (int baud)
+Sets the baud rate for the component.
+
+Parameters:
+baud
- Integer representing the new baud rate.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/i2cConfiguration.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/i2cConfiguration.html
new file mode 100644
index 00000000..24dc5f65
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/i2cConfiguration.html
@@ -0,0 +1,285 @@
+
+
+
+
+i2cConfiguration (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+@Prototype
+@EachProperty("pi4j.i2c")
+ public class i2cConfiguration
+
extends Object
+This class handles the configuration of an I2C components.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
The i2cConfiguration constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
int
+
+
+
Gets the bus pin for the component.
+
+
int
+
+
+
+
+
+
Gets the id of the component.
+
+
+
+
+
Gets the name of the component.
+
+
void
+
+
+
void
+
+
+
void
+
+
+
Sets the name of the component.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+i2cConfiguration
+public i2cConfiguration (@Parameter
+ String id)
+The i2cConfiguration constructor.
+
+Parameters:
+id
- The configuration id as defined in the application.yml
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getId
+
+Gets the id of the component.
+
+Returns:
+The id of the component.
+
+
+
+
+
+getName
+
+Gets the name of the component.
+
+Returns:
+The name of the component.
+
+
+
+
+
+setName
+public void setName (String name)
+Sets the name of the component.
+
+Parameters:
+name
- The string name to replace the existing name.
+
+
+
+
+
+getBus
+public int getBus ()
+Gets the bus pin for the component.
+
+Returns:
+integer representing the bus.
+
+
+
+
+
+setBus
+public void setBus (int bus)
+Sets the bus pin
+
+Parameters:
+bus
- integer representing the bus pin.
+
+
+
+
+
+getDevice
+public int getDevice ()
+Gets the device
+
+Returns:
+the device represented by an integer.
+
+
+
+
+
+setDevice
+public void setDevice (int device)
+Sets the device
+
+Parameters:
+device
- The device as an integer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/package-summary.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/package-summary.html
new file mode 100644
index 00000000..6a3e7ed6
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/package-summary.html
@@ -0,0 +1,137 @@
+
+
+
+
+com.opensourcewithslu.utilities (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package com.opensourcewithslu.utilities
+
+
+
+
+
+
+
+
Classes
+
+
+
+
+
+
This class handles the configuration of a digital input component.
+
+
+
+
This class handles the configuration of a digital output component.
+
+
+
+
This class handles the configuration of an I2C components.
+
+
+
+
Class for configuring multipin components.
+
+
+
+
The Pi4JFactory class is responsible for creating all the beans for components that are being used.
+
+
+
+
The Pi4JMultipinFactory class is responsible for creating all the beans for all multi pin components that are being used.
+
+
+
+
The PwmConfiguration class handles the configuration of a pwm component.
+
+
+
+
This class handles the configuration of a SPI component.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/package-tree.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/package-tree.html
new file mode 100644
index 00000000..ceaa1588
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/package-tree.html
@@ -0,0 +1,77 @@
+
+
+
+
+com.opensourcewithslu.utilities Class Hierarchy (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/copy.svg b/pi4micronaut-utils/src/docs/javadoc/copy.svg
new file mode 100644
index 00000000..d435f6c3
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/copy.svg
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/element-list b/pi4micronaut-utils/src/docs/javadoc/element-list
new file mode 100644
index 00000000..6c0109fb
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/element-list
@@ -0,0 +1,5 @@
+com.opensourcewithslu
+com.opensourcewithslu.inputdevices
+com.opensourcewithslu.outputdevices
+com.opensourcewithslu.utilities
+com.opensourcewithslu.utilities.MultiPinConfigs
diff --git a/pi4micronaut-utils/src/docs/javadoc/help-doc.html b/pi4micronaut-utils/src/docs/javadoc/help-doc.html
new file mode 100644
index 00000000..19e35bf8
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/help-doc.html
@@ -0,0 +1,182 @@
+
+
+
+
+API Help (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+JavaDoc Help
+
+
+
+
Navigation
+Starting from the
Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The
Index and Search box allow you to navigate to specific declarations and summary pages, including:
All Packages ,
All Classes and Interfaces
+
+Search
+You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API. These items can be searched using part or all of the name, optionally using "camelCase" abbreviations, or multiple search terms separated by whitespace. Some examples:
+
+"j.l.obj"
matches "java.lang.Object"
+"InpStr"
matches "java.io.InputStream"
+"math exact long"
matches "java.lang.Math.absExact(long)"
+
+Refer to the Javadoc Search Specification for a full description of search features.
+
+
+
+
+
Kinds of Pages
+The following sections describe the different kinds of pages in this collection.
+
+Overview
+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.
+
+
+Package
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:
+
+Interfaces
+Classes
+Enum Classes
+Exception Classes
+Annotation Interfaces
+
+
+
+Class or Interface
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.
+
+Class Inheritance Diagram
+Direct Subclasses
+All Known Subinterfaces
+All Known Implementing Classes
+Class or Interface Declaration
+Class or Interface Description
+
+
+
+Nested Class Summary
+Enum Constant Summary
+Field Summary
+Property Summary
+Constructor Summary
+Method Summary
+Required Element Summary
+Optional Element Summary
+
+
+
+Enum Constant Details
+Field Details
+Property Details
+Constructor Details
+Method Details
+Element Details
+
+Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.
+The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+
+
+Other Files
+Packages and modules may contain pages with additional information related to the declarations nearby.
+
+
+Tree (Class Hierarchy)
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object
. Interfaces do not inherit from java.lang.Object
.
+
+When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
+When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
+
+
+
+All Packages
+The All Packages page contains an alphabetic index of all packages contained in the documentation.
+
+
+All Classes and Interfaces
+The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/index-all.html b/pi4micronaut-utils/src/docs/javadoc/index-all.html
new file mode 100644
index 00000000..bdbe5ade
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/index-all.html
@@ -0,0 +1,845 @@
+
+
+
+
+Index (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+A B C D G I L M P R S T U W All Classes and Interfaces | All Packages
+A
+
+actBuzzCheck - Variable in class com.opensourcewithslu.outputdevices.ActiveBuzzerHelper
+
+To check if the buzzer is active or not
+
+ActiveBuzzerHelper - Class in com.opensourcewithslu.outputdevices
+
+The ActiveBuzzerHelper class contains methods that pertain to the control of the active buzzer.
+
+ActiveBuzzerHelper(Pwm) - Constructor for class com.opensourcewithslu.outputdevices.ActiveBuzzerHelper
+
+BuzzerHelper constructor
+
+activeBuzzerOff() - Method in class com.opensourcewithslu.outputdevices.ActiveBuzzerHelper
+
+Turns the active buzzer off.
+
+activeBuzzerOn() - Method in class com.opensourcewithslu.outputdevices.ActiveBuzzerHelper
+
+Turns the active buzzer on by setting the duty cycle is 100 and frequency to 440hz.
+
+addEventListener(DigitalStateChangeListener) - Method in class com.opensourcewithslu.inputdevices.PhotoResistorHelper
+
+Adds an event listener to the Photo Resistor.
+
+addEventListener(DigitalStateChangeListener) - Method in class com.opensourcewithslu.inputdevices.PIRSensorHelper
+
+Adds an event listener to the PIR sensor.
+
+addEventListener(DigitalStateChangeListener) - Method in class com.opensourcewithslu.inputdevices.PushButtonHelper
+
+Adds an EventListener to the PushButton.
+
+addEventListener(DigitalStateChangeListener) - Method in class com.opensourcewithslu.inputdevices.SlideSwitchHelper
+
+Adds an EvenListener to the slide switch.
+
+addEventListener(DigitalStateChangeListener) - Method in class com.opensourcewithslu.inputdevices.TouchSwitchHelper
+
+Adds an event listener to the touch switch.
+
+Application - Class in com.opensourcewithslu
+
+Runs the Micronaut framework in the Pi4Micronaut framework.
+
+Application() - Constructor for class com.opensourcewithslu.Application
+
+
+B
+
+beep() - Method in class com.opensourcewithslu.outputdevices.ActiveBuzzerHelper
+
+Beep powers on, plays a single tone from the active buzzer for 2 seconds then powers down.
+
+
+C
+
+clearDisplay() - Method in class com.opensourcewithslu.outputdevices.LCD1602Helper
+
+Clears the display of text.
+
+clearLine(int) - Method in class com.opensourcewithslu.outputdevices.LCD1602Helper
+
+Clears the text of the specified line.
+
+com.opensourcewithslu - package com.opensourcewithslu
+
+com.opensourcewithslu.inputdevices - package com.opensourcewithslu.inputdevices
+
+com.opensourcewithslu.outputdevices - package com.opensourcewithslu.outputdevices
+
+com.opensourcewithslu.utilities - package com.opensourcewithslu.utilities
+
+com.opensourcewithslu.utilities.MultiPinConfigs - package com.opensourcewithslu.utilities.MultiPinConfigs
+
+createDigitalInput(DigitalInputConfiguration, Context) - Method in class com.opensourcewithslu.utilities.Pi4JFactory
+
+Creates a DigitalInput object for digital input components.
+
+createDigitalOutput(DigitalOutputConfiguration, Context) - Method in class com.opensourcewithslu.utilities.Pi4JFactory
+
+Creates a DigitalOutput object for digital output components.
+
+createI2C(i2cConfiguration, Context) - Method in class com.opensourcewithslu.utilities.Pi4JFactory
+
+Creates an I2CConfigBuilder Object for components that are I2C.
+
+createPi4jContext() - Method in class com.opensourcewithslu.utilities.Pi4JFactory
+
+This creates the Pi4J Context that is used to create all the beans for the individual components.
+
+createPwm(PwmConfiguration, Context) - Method in class com.opensourcewithslu.utilities.Pi4JFactory
+
+Creates a PWM object for components that are pwm.
+
+createSpi(SpiConfiguration, Context) - Method in class com.opensourcewithslu.utilities.Pi4JFactory
+
+Creates an SpiConfigBuilder object for components that are SPI.
+
+
+D
+
+DigitalInputConfiguration - Class in com.opensourcewithslu.utilities
+
+This class handles the configuration of a digital input component.
+
+DigitalInputConfiguration(String) - Constructor for class com.opensourcewithslu.utilities.DigitalInputConfiguration
+
+Constructor for the DigitalInputConfiguration.
+
+DigitalInputMultiPinConfiguration - Class in com.opensourcewithslu.utilities.MultiPinConfigs
+
+This class handles the configuration of a digital input component that has multiple pins.
+
+DigitalInputMultiPinConfiguration(String) - Constructor for class com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration
+
+The DigitalInputMultiPinConfiguration constructor.
+
+DigitalOutputConfiguration - Class in com.opensourcewithslu.utilities
+
+This class handles the configuration of a digital output component.
+
+DigitalOutputConfiguration(String) - Constructor for class com.opensourcewithslu.utilities.DigitalOutputConfiguration
+
+The DigitalOutputConfiguration constructor.
+
+
+G
+
+getAddress() - Method in class com.opensourcewithslu.utilities.DigitalInputConfiguration
+
+Gets the pin address for the component.
+
+getAddress() - Method in class com.opensourcewithslu.utilities.DigitalOutputConfiguration
+
+Gets the pin address for the component.
+
+getAddress() - Method in class com.opensourcewithslu.utilities.PwmConfiguration
+
+Gets the pin address for the component.
+
+getAddresses() - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration
+
+Gets the pin addresses for the component.
+
+getAddresses() - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+Gets the pin address for the component.
+
+getBaud() - Method in class com.opensourcewithslu.utilities.SpiConfiguration
+
+Gets the baud rate for the component.
+
+getBus() - Method in class com.opensourcewithslu.utilities.i2cConfiguration
+
+Gets the bus pin for the component.
+
+getChannel() - Method in class com.opensourcewithslu.utilities.SpiConfiguration
+
+Gets the channel for the component.
+
+getComponents() - Method in class com.opensourcewithslu.utilities.MultipinConfiguration
+
+Gets the components that are part of the overall component.
+
+getDark() - Method in class com.opensourcewithslu.inputdevices.PhotoResistorHelper
+
+getDebounce() - Method in class com.opensourcewithslu.utilities.DigitalInputConfiguration
+
+Gets the current debounce value for the component.
+
+getDebounces() - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration
+
+Gets the current debounce values for the component.
+
+getDevice() - Method in class com.opensourcewithslu.utilities.i2cConfiguration
+
+Gets the device
+
+getEncoderValue() - Method in class com.opensourcewithslu.inputdevices.RotaryEncoderHelper
+
+Gets the value of the rotary encoder.
+
+getId() - Method in class com.opensourcewithslu.utilities.DigitalInputConfiguration
+
+Gets the id of the component.
+
+getId() - Method in class com.opensourcewithslu.utilities.DigitalOutputConfiguration
+
+Gets the id of the component.
+
+getId() - Method in class com.opensourcewithslu.utilities.i2cConfiguration
+
+Gets the id of the component.
+
+getId() - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration
+
+Gets the id of the component.
+
+getId() - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+Gets the id of the component.
+
+getId() - Method in class com.opensourcewithslu.utilities.MultipinConfiguration
+
+Gets the id of the component.
+
+getId() - Method in class com.opensourcewithslu.utilities.PwmConfiguration
+
+Gets the id of the component.
+
+getId() - Method in class com.opensourcewithslu.utilities.SpiConfiguration
+
+Gets the id of the component.
+
+getInital() - Method in class com.opensourcewithslu.utilities.PwmConfiguration
+
+Gets the initial state that the component is in when first initialized.
+
+getInitals() - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+Gets the initial states that the component is in when first initialized.
+
+getInitial() - Method in class com.opensourcewithslu.utilities.DigitalOutputConfiguration
+
+Gets the initial state of the component.
+
+getMode() - Method in class com.opensourcewithslu.utilities.SpiConfiguration
+
+Gets the SPI mode for the component.
+
+getName() - Method in class com.opensourcewithslu.utilities.DigitalInputConfiguration
+
+Gets the name of the component.
+
+getName() - Method in class com.opensourcewithslu.utilities.DigitalOutputConfiguration
+
+Gets the name of the component.
+
+getName() - Method in class com.opensourcewithslu.utilities.i2cConfiguration
+
+Gets the name of the component.
+
+getName() - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration
+
+Gets the name of the component.
+
+getName() - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+Gets the name of the component.
+
+getName() - Method in class com.opensourcewithslu.utilities.PwmConfiguration
+
+Gets the name of the component.
+
+getName() - Method in class com.opensourcewithslu.utilities.SpiConfiguration
+
+Gets the name of the component.
+
+getProvider() - Method in class com.opensourcewithslu.utilities.DigitalInputConfiguration
+
+Gets the provider for the component.
+
+getProvider() - Method in class com.opensourcewithslu.utilities.DigitalOutputConfiguration
+
+Gets the provider for the component.
+
+getProvider() - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration
+
+Gets the provider for the component.
+
+getProvider() - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+Gets the provider for the component.
+
+getProvider() - Method in class com.opensourcewithslu.utilities.PwmConfiguration
+
+Gets the provider for the component.
+
+getPull() - Method in class com.opensourcewithslu.utilities.DigitalInputConfiguration
+
+Gets the pull resistance for the component.
+
+getPulls() - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration
+
+Gets the pull resistance for the component.
+
+getPwmType() - Method in class com.opensourcewithslu.utilities.PwmConfiguration
+
+Gets the pwm type of the component.
+
+getPwmTypes() - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+Gets the PWM types of the component.
+
+getShutdown() - Method in class com.opensourcewithslu.utilities.DigitalOutputConfiguration
+
+Gets the shutdown state of the component.
+
+getShutdown() - Method in class com.opensourcewithslu.utilities.PwmConfiguration
+
+Gets the shutdown state for the component.
+
+getShutdowns() - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+Gets the shutdown states for the component.
+
+
+I
+
+i2cConfiguration - Class in com.opensourcewithslu.utilities
+
+This class handles the configuration of an I2C components.
+
+i2cConfiguration(String) - Constructor for class com.opensourcewithslu.utilities.i2cConfiguration
+
+The i2cConfiguration constructor.
+
+initialize() - Method in class com.opensourcewithslu.inputdevices.PhotoResistorHelper
+
+Initializes the Photo Resistor and calls the updateDarkness function for every half second.
+
+initialize() - Method in class com.opensourcewithslu.inputdevices.PIRSensorHelper
+
+Initializes the listener that keeps track of if the PIR sensor detects motion or not.
+
+initialize() - Method in class com.opensourcewithslu.inputdevices.PushButtonHelper
+
+Initializes the PushButton.
+
+initialize() - Method in class com.opensourcewithslu.inputdevices.RotaryEncoderHelper
+
+Initializes the listener that keeps track of the rotary encoder's position.
+
+initialize() - Method in class com.opensourcewithslu.inputdevices.SlideSwitchHelper
+
+Initializes the listener that keeps track of whether the slide switch is high/low.
+
+initialize() - Method in class com.opensourcewithslu.inputdevices.TouchSwitchHelper
+
+Initializes the listener that keeps track of if the touch switch has been touched or not.
+
+intermittentTone() - Method in class com.opensourcewithslu.outputdevices.ActiveBuzzerHelper
+
+Intermittent tone will play a tone for a 20 seconds duration.
+
+isDark - Variable in class com.opensourcewithslu.inputdevices.PhotoResistorHelper
+
+To check if it is Dark.
+
+isMoving - Variable in class com.opensourcewithslu.inputdevices.PIRSensorHelper
+
+Shows if the PIR sensor detects movement or not.
+
+isOn - Variable in class com.opensourcewithslu.inputdevices.SlideSwitchHelper
+
+Shows if the slide switch is on.
+
+isPressed - Variable in class com.opensourcewithslu.inputdevices.PushButtonHelper
+
+Determines if the button is pressed.
+
+isTouched - Variable in class com.opensourcewithslu.inputdevices.TouchSwitchHelper
+
+Shows if the touch switch has been touched.
+
+
+L
+
+LCD1602Helper - Class in com.opensourcewithslu.outputdevices
+
+This helper class, LCD1602Helper, is for controlling and interacting with an I2C LCD1602 display.
+
+LCD1602Helper(I2CConfig, Context) - Constructor for class com.opensourcewithslu.outputdevices.LCD1602Helper
+
+The LCD1602Helper constructor.
+
+LEDHelper - Class in com.opensourcewithslu.outputdevices
+
+The class LEDHelper contains methods that pertain to the control of a LED.
+
+LEDHelper(DigitalOutput) - Constructor for class com.opensourcewithslu.outputdevices.LEDHelper
+
+LEGHelper constructor.
+
+ledOff() - Method in class com.opensourcewithslu.outputdevices.LEDHelper
+
+Turns off the LED by setting the DigitalOutput object to low.
+
+ledOff() - Method in class com.opensourcewithslu.outputdevices.RGBLEDHelper
+
+Turns off the RGB LED.
+
+ledOn() - Method in class com.opensourcewithslu.outputdevices.LEDHelper
+
+Turns on the LED by setting the DigitalOutput object to high.
+
+ledOn() - Method in class com.opensourcewithslu.outputdevices.RGBLEDHelper
+
+Turns on the RGB LED with default RGB values of 100,100,100 and frequencies of 200 Hertz.
+
+
+M
+
+main(String[]) - Static method in class com.opensourcewithslu.Application
+
+constructor
+
+morseCodeTone() - Method in class com.opensourcewithslu.outputdevices.ActiveBuzzerHelper
+
+Uses the active buzzer on and off function to beep the word pi in morse code.
+
+MultipinConfiguration - Class in com.opensourcewithslu.utilities
+
+Class for configuring multipin components.
+
+MultipinConfiguration(String, Object[]) - Constructor for class com.opensourcewithslu.utilities.MultipinConfiguration
+
+The MultipinConfiguration constructor.
+
+multiPinInput(DigitalInputMultiPinConfiguration, Context) - Method in class com.opensourcewithslu.utilities.Pi4JMultipinFactory
+
+Creates a MultipinConfiguration object for a multi pin digital input component.
+
+multiPinPwm(PwmMultiPinConfiguration, Context) - Method in class com.opensourcewithslu.utilities.Pi4JMultipinFactory
+
+Creates a MultipinConfiguration object for a multi pin pwm component.
+
+
+P
+
+PhotoResistorHelper - Class in com.opensourcewithslu.inputdevices
+
+The PhotoResistorHelper class is used to work with the functionalities of a Photo Resistor.
+
+PhotoResistorHelper(DigitalInput, DigitalOutput) - Constructor for class com.opensourcewithslu.inputdevices.PhotoResistorHelper
+
+TouchSwitchHelper constructor.
+
+Pi4JFactory - Class in com.opensourcewithslu.utilities
+
+The Pi4JFactory class is responsible for creating all the beans for components that are being used.
+
+Pi4JFactory() - Constructor for class com.opensourcewithslu.utilities.Pi4JFactory
+
+Pi4JMultipinFactory - Class in com.opensourcewithslu.utilities
+
+The Pi4JMultipinFactory class is responsible for creating all the beans for all multi pin components that are being used.
+
+Pi4JMultipinFactory() - Constructor for class com.opensourcewithslu.utilities.Pi4JMultipinFactory
+
+PIRSensorHelper - Class in com.opensourcewithslu.inputdevices
+
+The PIRSensorHelper class is used to initialize a PIR motion sensor.
+
+PIRSensorHelper(DigitalInput) - Constructor for class com.opensourcewithslu.inputdevices.PIRSensorHelper
+
+PIRSensorHelper constructor
+
+PushButtonHelper - Class in com.opensourcewithslu.inputdevices
+
+The PushButtonHelper class is used to create a listener that determines when a 4 pin button is pressed.
+
+PushButtonHelper(DigitalInput) - Constructor for class com.opensourcewithslu.inputdevices.PushButtonHelper
+
+The PushButtonHelper constructor.
+
+PwmConfiguration - Class in com.opensourcewithslu.utilities
+
+The PwmConfiguration class handles the configuration of a pwm component.
+
+PwmConfiguration(String) - Constructor for class com.opensourcewithslu.utilities.PwmConfiguration
+
+PwmConfiguration constructor.
+
+PwmMultiPinConfiguration - Class in com.opensourcewithslu.utilities.MultiPinConfigs
+
+This class handles the configuration of a PWM device that has multiple pins.
+
+PwmMultiPinConfiguration(String) - Constructor for class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+The PwmMultiPinConfiguration constructor.
+
+
+R
+
+readFromCard() - Method in class com.opensourcewithslu.inputdevices.RFidHelper
+
+When called, this method waits for any RFID card/fob to be scanned.
+
+removeEventListener() - Method in class com.opensourcewithslu.inputdevices.PhotoResistorHelper
+
+Removes the event listener from the Photo Resistor.
+
+removeEventListener() - Method in class com.opensourcewithslu.inputdevices.PIRSensorHelper
+
+Removes the event listener from the PIR sensor.
+
+removeEventListener() - Method in class com.opensourcewithslu.inputdevices.TouchSwitchHelper
+
+Removes the event listener from the touch switch.
+
+removeEventListener(DigitalStateChangeListener) - Method in class com.opensourcewithslu.inputdevices.PushButtonHelper
+
+Removes an EvenListener from the button.
+
+removeEventListener(DigitalStateChangeListener) - Method in class com.opensourcewithslu.inputdevices.SlideSwitchHelper
+
+Removes the EventListener from the slide switch.
+
+resetScanner() - Method in class com.opensourcewithslu.inputdevices.RFidHelper
+
+Resets the RFID scanner.
+
+RFidHelper - Class in com.opensourcewithslu.inputdevices
+
+The RFIDHelper class is for interacting with an RFID scanner.
+
+RFidHelper(SpiConfig, int, Context) - Constructor for class com.opensourcewithslu.inputdevices.RFidHelper
+
+The RFidHelper constructor WITH the reset pin as a parameter.
+
+RFidHelper(SpiConfig, Context) - Constructor for class com.opensourcewithslu.inputdevices.RFidHelper
+
+The RFidHelper constructor WITHOUT the reset pin as a parameter.
+
+RGBLEDHelper - Class in com.opensourcewithslu.outputdevices
+
+The RBGLEDHelper class handles all interactions with a RGB LED.
+
+RGBLEDHelper(MultipinConfiguration) - Constructor for class com.opensourcewithslu.outputdevices.RGBLEDHelper
+
+The RGBLEDHelper constructor.
+
+RotaryEncoderHelper - Class in com.opensourcewithslu.inputdevices
+
+The RotaryEncoderHelper class initializes a rotary encoder component and returns the value of the encoder when called upon.
+
+RotaryEncoderHelper(MultipinConfiguration) - Constructor for class com.opensourcewithslu.inputdevices.RotaryEncoderHelper
+
+The RotaryEncoderHelper constructor.
+
+
+S
+
+setAddress(int) - Method in class com.opensourcewithslu.utilities.DigitalInputConfiguration
+
+Sets the pin address.
+
+setAddress(int) - Method in class com.opensourcewithslu.utilities.DigitalOutputConfiguration
+
+Sets the pin address.
+
+setAddress(int) - Method in class com.opensourcewithslu.utilities.PwmConfiguration
+
+Sets a new pin address for the component.
+
+setAddresses(String) - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration
+
+Sets the pin addresses for the component.
+
+setAddresses(String) - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+Sets the pin addresses for the component.
+
+setBackLight(boolean) - Method in class com.opensourcewithslu.outputdevices.LCD1602Helper
+
+Setting the backlight state of the LCD based off the boolean input.
+
+setBaud(int) - Method in class com.opensourcewithslu.utilities.SpiConfiguration
+
+Sets the baud rate for the component.
+
+setBlue(int) - Method in class com.opensourcewithslu.outputdevices.RGBLEDHelper
+
+Sets the blue value of the LED.
+
+setBlue(int, int) - Method in class com.opensourcewithslu.outputdevices.RGBLEDHelper
+
+Sets the blue value and frequency of the LED.
+
+setBus(int) - Method in class com.opensourcewithslu.utilities.i2cConfiguration
+
+Sets the bus pin
+
+setChannel(int) - Method in class com.opensourcewithslu.utilities.SpiConfiguration
+
+Sets a new channel for the component.
+
+setColor(int[]) - Method in class com.opensourcewithslu.outputdevices.RGBLEDHelper
+
+Sets the color of the LED based of inputted RGB values.
+
+setColor(int[], int[]) - Method in class com.opensourcewithslu.outputdevices.RGBLEDHelper
+
+Sets the color of the LED using the array of RGB values and an array of frequencies.
+
+setColorHex(String) - Method in class com.opensourcewithslu.outputdevices.RGBLEDHelper
+
+Setting the color of the LED using a hexadecimal value.
+
+setColorHex(String, int[]) - Method in class com.opensourcewithslu.outputdevices.RGBLEDHelper
+
+Setting the color of the LED using a hexadecimal value and an array of frequencies.
+
+setDarknessThreshold(int) - Method in class com.opensourcewithslu.inputdevices.PhotoResistorHelper
+
+To set a threshold for Photo Resistor.
+
+setDebounce(Long) - Method in class com.opensourcewithslu.utilities.DigitalInputConfiguration
+
+Sets the debounce of the component.
+
+setDebounces(String) - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration
+
+Sets the debounces for the component.
+
+setDevice(int) - Method in class com.opensourcewithslu.utilities.i2cConfiguration
+
+Sets the device
+
+setGreen(int) - Method in class com.opensourcewithslu.outputdevices.RGBLEDHelper
+
+Sets the green value of the LED.
+
+setGreen(int, int) - Method in class com.opensourcewithslu.outputdevices.RGBLEDHelper
+
+Sets the green value and frequency of the LED.
+
+setInital(int) - Method in class com.opensourcewithslu.utilities.PwmConfiguration
+
+Sets the initial state that the component will be in when first initialized.
+
+setInitial(DigitalState) - Method in class com.opensourcewithslu.utilities.DigitalOutputConfiguration
+
+Sets the initial state for the component.
+
+setInitials(String) - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+Sets the initial states for the component.
+
+setMode(SpiMode) - Method in class com.opensourcewithslu.utilities.SpiConfiguration
+
+Sets the SPI mode for the component.
+
+setName(String) - Method in class com.opensourcewithslu.utilities.DigitalInputConfiguration
+
+Sets the name of the component.
+
+setName(String) - Method in class com.opensourcewithslu.utilities.DigitalOutputConfiguration
+
+Sets the name of the component.
+
+setName(String) - Method in class com.opensourcewithslu.utilities.i2cConfiguration
+
+Sets the name of the component.
+
+setName(String) - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration
+
+Sets the name of the component.
+
+setName(String) - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+Sets the name of the component.
+
+setName(String) - Method in class com.opensourcewithslu.utilities.PwmConfiguration
+
+Sets the name of the component.
+
+setName(String) - Method in class com.opensourcewithslu.utilities.SpiConfiguration
+
+Sets the name of the component.
+
+setProvider(String) - Method in class com.opensourcewithslu.utilities.DigitalInputConfiguration
+
+Sets the provider.
+
+setProvider(String) - Method in class com.opensourcewithslu.utilities.DigitalOutputConfiguration
+
+Sets the provider.
+
+setProvider(String) - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration
+
+Sets the provider.
+
+setProvider(String) - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+Sets the provider.
+
+setProvider(String) - Method in class com.opensourcewithslu.utilities.PwmConfiguration
+
+Sets the provider of the component.
+
+setPull(PullResistance) - Method in class com.opensourcewithslu.utilities.DigitalInputConfiguration
+
+Sets the pull resistance for the component.
+
+setPulls(String) - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration
+
+Sets all the pull resistance for the components.
+
+setPwmType(String) - Method in class com.opensourcewithslu.utilities.PwmConfiguration
+
+Sets the pwm type.
+
+setPwmTypes(String) - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+Sets the PWM types for the component.
+
+setRed(int) - Method in class com.opensourcewithslu.outputdevices.RGBLEDHelper
+
+Sets the red value of the LED.
+
+setRed(int, int) - Method in class com.opensourcewithslu.outputdevices.RGBLEDHelper
+
+Sets the red value and frequency of the LED.
+
+setShutdown(int) - Method in class com.opensourcewithslu.utilities.PwmConfiguration
+
+Sets the shutdown state for the component.
+
+setShutdown(DigitalState) - Method in class com.opensourcewithslu.utilities.DigitalOutputConfiguration
+
+Sets the shutdown state for the component.
+
+setShutdowns(String) - Method in class com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration
+
+Sets the shutdown states for the component.
+
+setToLow() - Method in class com.opensourcewithslu.inputdevices.PhotoResistorHelper
+
+To set the Photo Resistor output to low for each event.
+
+SlideSwitchHelper - Class in com.opensourcewithslu.inputdevices
+
+The SlideSwitchHelper class is used to initialize a slide switch.
+
+SlideSwitchHelper(DigitalInput) - Constructor for class com.opensourcewithslu.inputdevices.SlideSwitchHelper
+
+SlideSwitchHelper constructor.
+
+SpiConfiguration - Class in com.opensourcewithslu.utilities
+
+This class handles the configuration of a SPI component.
+
+SpiConfiguration(String) - Constructor for class com.opensourcewithslu.utilities.SpiConfiguration
+
+The SpiConfiguration constructor.
+
+switchState() - Method in class com.opensourcewithslu.outputdevices.LEDHelper
+
+Switches the state of the LED.
+
+
+T
+
+TouchSwitchHelper - Class in com.opensourcewithslu.inputdevices
+
+The TouchSwitchHelper class is used to initialize a touch switch.
+
+TouchSwitchHelper(DigitalInput) - Constructor for class com.opensourcewithslu.inputdevices.TouchSwitchHelper
+
+TouchSwitchHelper constructor.
+
+
+U
+
+updateDark() - Method in class com.opensourcewithslu.inputdevices.PhotoResistorHelper
+
+Updates the darknessValue of the Photo Resistor.
+
+
+W
+
+writeText(String) - Method in class com.opensourcewithslu.outputdevices.LCD1602Helper
+
+Writes a String to the display.
+
+writeTextAtLine(String, int) - Method in class com.opensourcewithslu.outputdevices.LCD1602Helper
+
+Writes a String to the defined line.
+
+writeToCard(Object) - Method in class com.opensourcewithslu.inputdevices.RFidHelper
+
+Writes data to an RFID fob.
+
+
+A B C D G I L M P R S T U W All Classes and Interfaces | All Packages
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/index.html b/pi4micronaut-utils/src/docs/javadoc/index.html
new file mode 100644
index 00000000..203eed4e
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/index.html
@@ -0,0 +1,73 @@
+
+
+
+
+Overview (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
Packages
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/legal/COPYRIGHT b/pi4micronaut-utils/src/docs/javadoc/legal/COPYRIGHT
new file mode 100644
index 00000000..ca74fffd
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/legal/COPYRIGHT
@@ -0,0 +1 @@
+Please see ..\java.base\COPYRIGHT
diff --git a/pi4micronaut-utils/src/docs/javadoc/legal/LICENSE b/pi4micronaut-utils/src/docs/javadoc/legal/LICENSE
new file mode 100644
index 00000000..4ad9fe40
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/legal/LICENSE
@@ -0,0 +1 @@
+Please see ..\java.base\LICENSE
diff --git a/pi4micronaut-utils/src/docs/javadoc/legal/jquery.md b/pi4micronaut-utils/src/docs/javadoc/legal/jquery.md
new file mode 100644
index 00000000..d468b318
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/legal/jquery.md
@@ -0,0 +1,72 @@
+## jQuery v3.6.1
+
+### jQuery License
+```
+jQuery v 3.6.1
+Copyright OpenJS Foundation and other contributors, https://openjsf.org/
+
+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.
+
+******************************************
+
+The jQuery JavaScript Library v3.6.1 also includes Sizzle.js
+
+Sizzle.js includes the following license:
+
+Copyright JS Foundation and other contributors, https://js.foundation/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/sizzle
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+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.
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+
+*********************
+
+```
diff --git a/pi4micronaut-utils/src/docs/javadoc/legal/jqueryUI.md b/pi4micronaut-utils/src/docs/javadoc/legal/jqueryUI.md
new file mode 100644
index 00000000..8bda9d7a
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/legal/jqueryUI.md
@@ -0,0 +1,49 @@
+## jQuery UI v1.13.2
+
+### jQuery UI License
+```
+Copyright jQuery Foundation and other contributors, https://jquery.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery-ui
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+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.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code contained within the demos directory.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+
+```
diff --git a/pi4micronaut-utils/src/docs/javadoc/link.svg b/pi4micronaut-utils/src/docs/javadoc/link.svg
new file mode 100644
index 00000000..dadef51c
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/link.svg
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/member-search-index.js b/pi4micronaut-utils/src/docs/javadoc/member-search-index.js
new file mode 100644
index 00000000..e278f622
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/member-search-index.js
@@ -0,0 +1 @@
+memberSearchIndex = [{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"actBuzzCheck"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"ActiveBuzzerHelper(Pwm)","u":"%3Cinit%3E(com.pi4j.io.pwm.Pwm)"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"activeBuzzerOff()"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"activeBuzzerOn()"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu","c":"Application","l":"Application()","u":"%3Cinit%3E()"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"beep()"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"clearDisplay()"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"clearLine(int)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createDigitalInput(DigitalInputConfiguration, Context)","u":"createDigitalInput(com.opensourcewithslu.utilities.DigitalInputConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createDigitalOutput(DigitalOutputConfiguration, Context)","u":"createDigitalOutput(com.opensourcewithslu.utilities.DigitalOutputConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createI2C(i2cConfiguration, Context)","u":"createI2C(com.opensourcewithslu.utilities.i2cConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createPi4jContext()"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createPwm(PwmConfiguration, Context)","u":"createPwm(com.opensourcewithslu.utilities.PwmConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createSpi(SpiConfiguration, Context)","u":"createSpi(com.opensourcewithslu.utilities.SpiConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"DigitalInputConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"DigitalInputMultiPinConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"DigitalOutputConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getAddress()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getAddress()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getAddress()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getAddresses()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getAddresses()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getBaud()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"getBus()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getChannel()"},{"p":"com.opensourcewithslu.utilities","c":"MultipinConfiguration","l":"getComponents()"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"getDark()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getDebounce()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getDebounces()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"getDevice()"},{"p":"com.opensourcewithslu.inputdevices","c":"RotaryEncoderHelper","l":"getEncoderValue()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"MultipinConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getInital()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getInitals()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getInitial()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getMode()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getPull()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getPulls()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getPwmType()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getPwmTypes()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getShutdown()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getShutdown()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getShutdowns()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"i2cConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"RotaryEncoderHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"initialize()"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"intermittentTone()"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"isDark"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"isMoving"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"isOn"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"isPressed"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"isTouched"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"LCD1602Helper(I2CConfig, Context)","u":"%3Cinit%3E(com.pi4j.io.i2c.I2CConfig,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.outputdevices","c":"LEDHelper","l":"LEDHelper(DigitalOutput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalOutput)"},{"p":"com.opensourcewithslu.outputdevices","c":"LEDHelper","l":"ledOff()"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"ledOff()"},{"p":"com.opensourcewithslu.outputdevices","c":"LEDHelper","l":"ledOn()"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"ledOn()"},{"p":"com.opensourcewithslu","c":"Application","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"morseCodeTone()"},{"p":"com.opensourcewithslu.utilities","c":"MultipinConfiguration","l":"MultipinConfiguration(String, Object[])","u":"%3Cinit%3E(java.lang.String,java.lang.Object[])"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JMultipinFactory","l":"multiPinInput(DigitalInputMultiPinConfiguration, Context)","u":"multiPinInput(com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JMultipinFactory","l":"multiPinPwm(PwmMultiPinConfiguration, Context)","u":"multiPinPwm(com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"PhotoResistorHelper(DigitalInput, DigitalOutput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput,com.pi4j.io.gpio.digital.DigitalOutput)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"Pi4JFactory()","u":"%3Cinit%3E()"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JMultipinFactory","l":"Pi4JMultipinFactory()","u":"%3Cinit%3E()"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"PIRSensorHelper(DigitalInput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput)"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"PushButtonHelper(DigitalInput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"PwmConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"PwmMultiPinConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"readFromCard()"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"removeEventListener()"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"removeEventListener()"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"removeEventListener()"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"removeEventListener(DigitalStateChangeListener)","u":"removeEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"removeEventListener(DigitalStateChangeListener)","u":"removeEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"resetScanner()"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"RFidHelper(SpiConfig, Context)","u":"%3Cinit%3E(com.pi4j.io.spi.SpiConfig,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"RFidHelper(SpiConfig, int, Context)","u":"%3Cinit%3E(com.pi4j.io.spi.SpiConfig,int,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"RGBLEDHelper(MultipinConfiguration)","u":"%3Cinit%3E(com.opensourcewithslu.utilities.MultipinConfiguration)"},{"p":"com.opensourcewithslu.inputdevices","c":"RotaryEncoderHelper","l":"RotaryEncoderHelper(MultipinConfiguration)","u":"%3Cinit%3E(com.opensourcewithslu.utilities.MultipinConfiguration)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setAddress(int)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setAddress(int)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setAddress(int)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setAddresses(String)","u":"setAddresses(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setAddresses(String)","u":"setAddresses(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"setBackLight(boolean)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"setBaud(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setBlue(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setBlue(int, int)","u":"setBlue(int,int)"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"setBus(int)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"setChannel(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setColor(int[])"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setColor(int[], int[])","u":"setColor(int[],int[])"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setColorHex(String)","u":"setColorHex(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setColorHex(String, int[])","u":"setColorHex(java.lang.String,int[])"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"setDarknessThreshold(int)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setDebounce(Long)","u":"setDebounce(java.lang.Long)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setDebounces(String)","u":"setDebounces(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"setDevice(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setGreen(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setGreen(int, int)","u":"setGreen(int,int)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setInital(int)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setInitial(DigitalState)","u":"setInitial(com.pi4j.io.gpio.digital.DigitalState)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setInitials(String)","u":"setInitials(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"setMode(SpiMode)","u":"setMode(com.pi4j.io.spi.SpiMode)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setPull(PullResistance)","u":"setPull(com.pi4j.io.gpio.digital.PullResistance)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setPulls(String)","u":"setPulls(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setPwmType(String)","u":"setPwmType(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setPwmTypes(String)","u":"setPwmTypes(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setRed(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setRed(int, int)","u":"setRed(int,int)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setShutdown(DigitalState)","u":"setShutdown(com.pi4j.io.gpio.digital.DigitalState)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setShutdown(int)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setShutdowns(String)","u":"setShutdowns(java.lang.String)"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"setToLow()"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"SlideSwitchHelper(DigitalInput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"SpiConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"LEDHelper","l":"switchState()"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"TouchSwitchHelper(DigitalInput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput)"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"updateDark()"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"writeText(String)","u":"writeText(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"writeTextAtLine(String, int)","u":"writeTextAtLine(java.lang.String,int)"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"writeToCard(Object)","u":"writeToCard(java.lang.Object)"}];updateSearchResults();
\ No newline at end of file
diff --git a/pi4micronaut-utils/src/docs/javadoc/module-search-index.js b/pi4micronaut-utils/src/docs/javadoc/module-search-index.js
new file mode 100644
index 00000000..0d59754f
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/module-search-index.js
@@ -0,0 +1 @@
+moduleSearchIndex = [];updateSearchResults();
\ No newline at end of file
diff --git a/pi4micronaut-utils/src/docs/javadoc/overview-summary.html b/pi4micronaut-utils/src/docs/javadoc/overview-summary.html
new file mode 100644
index 00000000..abdf857b
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/overview-summary.html
@@ -0,0 +1,25 @@
+
+
+
+
+pi4micronaut-utils v1.0 API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+index.html
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/overview-tree.html b/pi4micronaut-utils/src/docs/javadoc/overview-tree.html
new file mode 100644
index 00000000..123c143c
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/overview-tree.html
@@ -0,0 +1,95 @@
+
+
+
+
+Class Hierarchy (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/package-search-index.js b/pi4micronaut-utils/src/docs/javadoc/package-search-index.js
new file mode 100644
index 00000000..babb6f0a
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/package-search-index.js
@@ -0,0 +1 @@
+packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"com.opensourcewithslu"},{"l":"com.opensourcewithslu.inputdevices"},{"l":"com.opensourcewithslu.outputdevices"},{"l":"com.opensourcewithslu.utilities"},{"l":"com.opensourcewithslu.utilities.MultiPinConfigs"}];updateSearchResults();
\ No newline at end of file
diff --git a/pi4micronaut-utils/src/docs/javadoc/resources/glass.png b/pi4micronaut-utils/src/docs/javadoc/resources/glass.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7f591f467a1c0c949bbc510156a0c1afb860a6e
GIT binary patch
literal 499
zcmVJoRsvExf%rEN>jUL}qZ_~k#FbE+Q;{`;0FZwVNX2n-^JoI;
zP;4#$8DIy*Yk-P>VN(DUKmPse7mx+ExD4O|;?E5D0Z5($mjO3`*anwQU^s{ZDK#Lz
zj>~{qyaIx5K!t%=G&2IJNzg!ChRpyLkO7}Ry!QaotAHAMpbB3AF(}|_f!G-oI|uK6
z`id_dumai5K%C3Y$;tKS_iqMPHg<*|-@e`liWLAggVM!zAP#@l;=c>S03;{#04Z~5
zN_+ss=Yg6*hTr59mzMwZ@+l~q!+?ft!fF66AXT#wWavHt30bZWFCK%!BNk}LN?0Hg
z1VF_nfs`Lm^DjYZ1(1uD0u4CSIr)XAaqW6IT{!St5~1{i=i}zAy76p%_|w8rh@@c0Axr!ns=D-X+|*sY6!@wacG9%)Qn*O
zl0sa739kT-&_?#oVxXF6tOnqTD)cZ}2vi$`ZU8RLAlo8=_z#*P3xI~i!lEh+Pdu-L
zx{d*wgjtXbnGX_Yf@Tc7Q3YhLhPvc8noGJs2DA~1DySiA&6V{5JzFt
ojAY1KXm~va;tU{v7C?Xj0BHw!K;2aXV*mgE07*qoM6N<$f;4TDA^-pY
literal 0
HcmV?d00001
diff --git a/pi4micronaut-utils/src/docs/javadoc/script-dir/jquery-3.6.1.min.js b/pi4micronaut-utils/src/docs/javadoc/script-dir/jquery-3.6.1.min.js
new file mode 100644
index 00000000..2c69bc90
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/script-dir/jquery-3.6.1.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML=" ";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=" ",v.option=!!ce.lastChild;var ge={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("
",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length
").append(x("").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1
").text(e))},100))}});x.ui.autocomplete});
\ No newline at end of file
diff --git a/pi4micronaut-utils/src/docs/javadoc/script.js b/pi4micronaut-utils/src/docs/javadoc/script.js
new file mode 100644
index 00000000..f1a0f256
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/script.js
@@ -0,0 +1,253 @@
+/*
+ * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved.
+ * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+
+var moduleSearchIndex;
+var packageSearchIndex;
+var typeSearchIndex;
+var memberSearchIndex;
+var tagSearchIndex;
+
+var oddRowColor = "odd-row-color";
+var evenRowColor = "even-row-color";
+var sortAsc = "sort-asc";
+var sortDesc = "sort-desc";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+
+function loadScripts(doc, tag) {
+ createElem(doc, tag, 'search.js');
+
+ createElem(doc, tag, 'module-search-index.js');
+ createElem(doc, tag, 'package-search-index.js');
+ createElem(doc, tag, 'type-search-index.js');
+ createElem(doc, tag, 'member-search-index.js');
+ createElem(doc, tag, 'tag-search-index.js');
+}
+
+function createElem(doc, tag, path) {
+ var script = doc.createElement(tag);
+ var scriptElement = doc.getElementsByTagName(tag)[0];
+ script.src = pathtoroot + path;
+ scriptElement.parentNode.insertBefore(script, scriptElement);
+}
+
+// Helper for making content containing release names comparable lexicographically
+function makeComparable(s) {
+ return s.toLowerCase().replace(/(\d+)/g,
+ function(n, m) {
+ return ("000" + m).slice(-4);
+ });
+}
+
+// Switches between two styles depending on a condition
+function toggleStyle(classList, condition, trueStyle, falseStyle) {
+ if (condition) {
+ classList.remove(falseStyle);
+ classList.add(trueStyle);
+ } else {
+ classList.remove(trueStyle);
+ classList.add(falseStyle);
+ }
+}
+
+// Sorts the rows in a table lexicographically by the content of a specific column
+function sortTable(header, columnIndex, columns) {
+ var container = header.parentElement;
+ var descending = header.classList.contains(sortAsc);
+ container.querySelectorAll("div.table-header").forEach(
+ function(header) {
+ header.classList.remove(sortAsc);
+ header.classList.remove(sortDesc);
+ }
+ )
+ var cells = container.children;
+ var rows = [];
+ for (var i = columns; i < cells.length; i += columns) {
+ rows.push(Array.prototype.slice.call(cells, i, i + columns));
+ }
+ var comparator = function(a, b) {
+ var ka = makeComparable(a[columnIndex].textContent);
+ var kb = makeComparable(b[columnIndex].textContent);
+ if (ka < kb)
+ return descending ? 1 : -1;
+ if (ka > kb)
+ return descending ? -1 : 1;
+ return 0;
+ };
+ var sorted = rows.sort(comparator);
+ var visible = 0;
+ sorted.forEach(function(row) {
+ if (row[0].style.display !== 'none') {
+ var isEvenRow = visible++ % 2 === 0;
+ }
+ row.forEach(function(cell) {
+ toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor);
+ container.appendChild(cell);
+ })
+ });
+ toggleStyle(header.classList, descending, sortDesc, sortAsc);
+}
+
+// Toggles the visibility of a table category in all tables in a page
+function toggleGlobal(checkbox, selected, columns) {
+ var display = checkbox.checked ? '' : 'none';
+ document.querySelectorAll("div.table-tabs").forEach(function(t) {
+ var id = t.parentElement.getAttribute("id");
+ var selectedClass = id + "-tab" + selected;
+ // if selected is empty string it selects all uncategorized entries
+ var selectUncategorized = !Boolean(selected);
+ var visible = 0;
+ document.querySelectorAll('div.' + id)
+ .forEach(function(elem) {
+ if (selectUncategorized) {
+ if (elem.className.indexOf(selectedClass) === -1) {
+ elem.style.display = display;
+ }
+ } else if (elem.classList.contains(selectedClass)) {
+ elem.style.display = display;
+ }
+ if (elem.style.display === '') {
+ var isEvenRow = visible++ % (columns * 2) < columns;
+ toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
+ }
+ });
+ var displaySection = visible === 0 ? 'none' : '';
+ t.parentElement.style.display = displaySection;
+ document.querySelector("li#contents-" + id).style.display = displaySection;
+ })
+}
+
+// Shows the elements of a table belonging to a specific category
+function show(tableId, selected, columns) {
+ if (tableId !== selected) {
+ document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')')
+ .forEach(function(elem) {
+ elem.style.display = 'none';
+ });
+ }
+ document.querySelectorAll('div.' + selected)
+ .forEach(function(elem, index) {
+ elem.style.display = '';
+ var isEvenRow = index % (columns * 2) < columns;
+ toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
+ });
+ updateTabs(tableId, selected);
+}
+
+function updateTabs(tableId, selected) {
+ document.querySelector('div#' + tableId +' .summary-table')
+ .setAttribute('aria-labelledby', selected);
+ document.querySelectorAll('button[id^="' + tableId + '"]')
+ .forEach(function(tab, index) {
+ if (selected === tab.id || (tableId === selected && index === 0)) {
+ tab.className = activeTableTab;
+ tab.setAttribute('aria-selected', true);
+ tab.setAttribute('tabindex',0);
+ } else {
+ tab.className = tableTab;
+ tab.setAttribute('aria-selected', false);
+ tab.setAttribute('tabindex',-1);
+ }
+ });
+}
+
+function switchTab(e) {
+ var selected = document.querySelector('[aria-selected=true]');
+ if (selected) {
+ if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) {
+ // left or up arrow key pressed: move focus to previous tab
+ selected.previousSibling.click();
+ selected.previousSibling.focus();
+ e.preventDefault();
+ } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) {
+ // right or down arrow key pressed: move focus to next tab
+ selected.nextSibling.click();
+ selected.nextSibling.focus();
+ e.preventDefault();
+ }
+ }
+}
+
+var updateSearchResults = function() {};
+
+function indexFilesLoaded() {
+ return moduleSearchIndex
+ && packageSearchIndex
+ && typeSearchIndex
+ && memberSearchIndex
+ && tagSearchIndex;
+}
+// Copy the contents of the local snippet to the clipboard
+function copySnippet(button) {
+ copyToClipboard(button.nextElementSibling.innerText);
+ switchCopyLabel(button, button.firstElementChild);
+}
+function copyToClipboard(content) {
+ var textarea = document.createElement("textarea");
+ textarea.style.height = 0;
+ document.body.appendChild(textarea);
+ textarea.value = content;
+ textarea.select();
+ document.execCommand("copy");
+ document.body.removeChild(textarea);
+}
+function switchCopyLabel(button, span) {
+ var copied = span.getAttribute("data-copied");
+ button.classList.add("visible");
+ var initialLabel = span.innerHTML;
+ span.innerHTML = copied;
+ setTimeout(function() {
+ button.classList.remove("visible");
+ setTimeout(function() {
+ if (initialLabel !== copied) {
+ span.innerHTML = initialLabel;
+ }
+ }, 100);
+ }, 1900);
+}
+// Workaround for scroll position not being included in browser history (8249133)
+document.addEventListener("DOMContentLoaded", function(e) {
+ var contentDiv = document.querySelector("div.flex-content");
+ window.addEventListener("popstate", function(e) {
+ if (e.state !== null) {
+ contentDiv.scrollTop = e.state;
+ }
+ });
+ window.addEventListener("hashchange", function(e) {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ });
+ var timeoutId;
+ contentDiv.addEventListener("scroll", function(e) {
+ if (timeoutId) {
+ clearTimeout(timeoutId);
+ }
+ timeoutId = setTimeout(function() {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ }, 100);
+ });
+ if (!location.hash) {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ }
+});
diff --git a/pi4micronaut-utils/src/docs/javadoc/search-page.js b/pi4micronaut-utils/src/docs/javadoc/search-page.js
new file mode 100644
index 00000000..e4da097d
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/search-page.js
@@ -0,0 +1,284 @@
+/*
+ * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
+ * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+
+"use strict";
+$(function() {
+ var copy = $("#page-search-copy");
+ var expand = $("#page-search-expand");
+ var searchLink = $("span#page-search-link");
+ var redirect = $("input#search-redirect");
+ function setSearchUrlTemplate() {
+ var href = document.location.href.split(/[#?]/)[0];
+ href += "?q=" + "%s";
+ if (redirect.is(":checked")) {
+ href += "&r=1";
+ }
+ searchLink.html(href);
+ copy[0].onmouseenter();
+ }
+ function copyLink(e) {
+ copyToClipboard(this.previousSibling.innerText);
+ switchCopyLabel(this, this.lastElementChild);
+ }
+ copy.click(copyLink);
+ copy[0].onmouseenter = function() {};
+ redirect.click(setSearchUrlTemplate);
+ setSearchUrlTemplate();
+ copy.prop("disabled", false);
+ redirect.prop("disabled", false);
+ expand.click(function (e) {
+ var searchInfo = $("div.page-search-info");
+ if(this.parentElement.hasAttribute("open")) {
+ searchInfo.attr("style", "border-width: 0;");
+ } else {
+ searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight"));
+ }
+ });
+});
+$(window).on("load", function() {
+ var input = $("#page-search-input");
+ var reset = $("#page-search-reset");
+ var notify = $("#page-search-notify");
+ var resultSection = $("div#result-section");
+ var resultContainer = $("div#result-container");
+ var searchTerm = "";
+ var activeTab = "";
+ var fixedTab = false;
+ var visibleTabs = [];
+ var feelingLucky = false;
+ function renderResults(result) {
+ if (!result.length) {
+ notify.html(messages.noResult);
+ } else if (result.length === 1) {
+ notify.html(messages.oneResult);
+ } else {
+ notify.html(messages.manyResults.replace("{0}", result.length));
+ }
+ resultContainer.empty();
+ var r = {
+ "types": [],
+ "members": [],
+ "packages": [],
+ "modules": [],
+ "searchTags": []
+ };
+ for (var i in result) {
+ var item = result[i];
+ var arr = r[item.category];
+ arr.push(item);
+ }
+ if (!activeTab || r[activeTab].length === 0 || !fixedTab) {
+ Object.keys(r).reduce(function(prev, curr) {
+ if (r[curr].length > 0 && r[curr][0].score > prev) {
+ activeTab = curr;
+ return r[curr][0].score;
+ }
+ return prev;
+ }, 0);
+ }
+ if (feelingLucky && activeTab) {
+ notify.html(messages.redirecting)
+ var firstItem = r[activeTab][0];
+ window.location = getURL(firstItem.indexItem, firstItem.category);
+ return;
+ }
+ if (result.length > 20) {
+ if (searchTerm[searchTerm.length - 1] === ".") {
+ if (activeTab === "types" && r["members"].length > r["types"].length) {
+ activeTab = "members";
+ } else if (activeTab === "packages" && r["types"].length > r["packages"].length) {
+ activeTab = "types";
+ }
+ }
+ }
+ var categoryCount = Object.keys(r).reduce(function(prev, curr) {
+ return prev + (r[curr].length > 0 ? 1 : 0);
+ }, 0);
+ visibleTabs = [];
+ var tabContainer = $("
").appendTo(resultContainer);
+ for (var key in r) {
+ var id = "#result-tab-" + key.replace("searchTags", "search_tags");
+ if (r[key].length) {
+ var count = r[key].length >= 1000 ? "999+" : r[key].length;
+ if (result.length > 20 && categoryCount > 1) {
+ var button = $("").appendTo(tabContainer);
+ button.click(key, function(e) {
+ fixedTab = true;
+ renderResult(e.data, $(this));
+ });
+ visibleTabs.push(key);
+ } else {
+ $("").appendTo(tabContainer);
+ renderTable(key, r[key]).appendTo(resultContainer);
+ tabContainer = $("
").appendTo(resultContainer);
+
+ }
+ }
+ }
+ if (activeTab && result.length > 20 && categoryCount > 1) {
+ $("button#result-tab-" + activeTab).addClass("active-table-tab");
+ renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
+ }
+ resultSection.show();
+ function renderResult(category, button) {
+ activeTab = category;
+ setSearchUrl();
+ resultContainer.find("div.summary-table").remove();
+ renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
+ button.siblings().removeClass("active-table-tab");
+ button.addClass("active-table-tab");
+ }
+ }
+ function selectTab(category) {
+ $("button#result-tab-" + category).click();
+ }
+ function renderTable(category, items) {
+ var table = $("")
+ .addClass(category === "modules"
+ ? "one-column-search-results"
+ : "two-column-search-results");
+ var col1, col2;
+ if (category === "modules") {
+ col1 = "Module";
+ } else if (category === "packages") {
+ col1 = "Module";
+ col2 = "Package";
+ } else if (category === "types") {
+ col1 = "Package";
+ col2 = "Class"
+ } else if (category === "members") {
+ col1 = "Class";
+ col2 = "Member";
+ } else if (category === "searchTags") {
+ col1 = "Location";
+ col2 = "Name";
+ }
+ $("").appendTo(table);
+ if (category !== "modules") {
+ $("").appendTo(table);
+ }
+ $.each(items, function(index, item) {
+ var rowColor = index % 2 ? "odd-row-color" : "even-row-color";
+ renderItem(item, table, rowColor);
+ });
+ return table;
+ }
+ function renderItem(item, table, rowColor) {
+ var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length);
+ var link = $("
")
+ .attr("href", getURL(item.indexItem, item.category))
+ .attr("tabindex", "0")
+ .addClass("search-result-link")
+ .html(label);
+ var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1);
+ if (item.category === "searchTags") {
+ container = item.indexItem.h || "";
+ }
+ if (item.category !== "modules") {
+ $("
").html(container).addClass("col-plain").addClass(rowColor).appendTo(table);
+ }
+ $("
").html(link).addClass("col-last").addClass(rowColor).appendTo(table);
+ }
+ var timeout;
+ function schedulePageSearch() {
+ if (timeout) {
+ clearTimeout(timeout);
+ }
+ timeout = setTimeout(function () {
+ doPageSearch()
+ }, 100);
+ }
+ function doPageSearch() {
+ setSearchUrl();
+ var term = searchTerm = input.val().trim();
+ if (term === "") {
+ notify.html(messages.enterTerm);
+ activeTab = "";
+ fixedTab = false;
+ resultContainer.empty();
+ resultSection.hide();
+ } else {
+ notify.html(messages.searching);
+ doSearch({ term: term, maxResults: 1200 }, renderResults);
+ }
+ }
+ function setSearchUrl() {
+ var query = input.val().trim();
+ var url = document.location.pathname;
+ if (query) {
+ url += "?q=" + encodeURI(query);
+ if (activeTab && fixedTab) {
+ url += "&c=" + activeTab;
+ }
+ }
+ history.replaceState({query: query}, "", url);
+ }
+ input.on("input", function(e) {
+ feelingLucky = false;
+ schedulePageSearch();
+ });
+ $(document).keydown(function(e) {
+ if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) {
+ if (activeTab && visibleTabs.length > 1) {
+ var idx = visibleTabs.indexOf(activeTab);
+ idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1;
+ selectTab(visibleTabs[idx % visibleTabs.length]);
+ return false;
+ }
+ }
+ });
+ reset.click(function() {
+ notify.html(messages.enterTerm);
+ resultSection.hide();
+ activeTab = "";
+ fixedTab = false;
+ resultContainer.empty();
+ input.val('').focus();
+ setSearchUrl();
+ });
+ input.prop("disabled", false);
+ reset.prop("disabled", false);
+
+ var urlParams = new URLSearchParams(window.location.search);
+ if (urlParams.has("q")) {
+ input.val(urlParams.get("q"))
+ }
+ if (urlParams.has("c")) {
+ activeTab = urlParams.get("c");
+ fixedTab = true;
+ }
+ if (urlParams.get("r")) {
+ feelingLucky = true;
+ }
+ if (input.val()) {
+ doPageSearch();
+ } else {
+ notify.html(messages.enterTerm);
+ }
+ input.select().focus();
+});
diff --git a/pi4micronaut-utils/src/docs/javadoc/search.html b/pi4micronaut-utils/src/docs/javadoc/search.html
new file mode 100644
index 00000000..e2e83df0
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/search.html
@@ -0,0 +1,71 @@
+
+
+
+
+
Search (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Search
+
+
+
+
+Additional resources
+
+
+
+
The help page provides an introduction to the scope and syntax of JavaDoc search.
+
You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page.
+
The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format.
+
link Copy
+
+
+Redirect to first result
+
+Loading search index...
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/search.js b/pi4micronaut-utils/src/docs/javadoc/search.js
new file mode 100644
index 00000000..4ca95577
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/search.js
@@ -0,0 +1,458 @@
+/*
+ * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+"use strict";
+const messages = {
+ enterTerm: "Enter a search term",
+ noResult: "No results found",
+ oneResult: "Found one result",
+ manyResults: "Found {0} results",
+ loading: "Loading search index...",
+ searching: "Searching...",
+ redirecting: "Redirecting to first result...",
+ linkIcon: "Link icon",
+ linkToSection: "Link to this section"
+}
+const categories = {
+ modules: "Modules",
+ packages: "Packages",
+ types: "Classes and Interfaces",
+ members: "Members",
+ searchTags: "Search Tags"
+};
+const highlight = "
$& ";
+const NO_MATCH = {};
+const MAX_RESULTS = 300;
+function checkUnnamed(name, separator) {
+ return name === "
" || !name ? "" : name + separator;
+}
+function escapeHtml(str) {
+ return str.replace(//g, ">");
+}
+function getHighlightedText(str, boundaries, from, to) {
+ var start = from;
+ var text = "";
+ for (var i = 0; i < boundaries.length; i += 2) {
+ var b0 = boundaries[i];
+ var b1 = boundaries[i + 1];
+ if (b0 >= to || b1 <= from) {
+ continue;
+ }
+ text += escapeHtml(str.slice(start, Math.max(start, b0)));
+ text += "";
+ text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1)));
+ text += " ";
+ start = Math.min(to, b1);
+ }
+ text += escapeHtml(str.slice(start, to));
+ return text;
+}
+function getURLPrefix(item, category) {
+ var urlPrefix = "";
+ var slash = "/";
+ if (category === "modules") {
+ return item.l + slash;
+ } else if (category === "packages" && item.m) {
+ return item.m + slash;
+ } else if (category === "types" || category === "members") {
+ if (item.m) {
+ urlPrefix = item.m + slash;
+ } else {
+ $.each(packageSearchIndex, function(index, it) {
+ if (it.m && item.p === it.l) {
+ urlPrefix = it.m + slash;
+ }
+ });
+ }
+ }
+ return urlPrefix;
+}
+function getURL(item, category) {
+ if (item.url) {
+ return item.url;
+ }
+ var url = getURLPrefix(item, category);
+ if (category === "modules") {
+ url += "module-summary.html";
+ } else if (category === "packages") {
+ if (item.u) {
+ url = item.u;
+ } else {
+ url += item.l.replace(/\./g, '/') + "/package-summary.html";
+ }
+ } else if (category === "types") {
+ if (item.u) {
+ url = item.u;
+ } else {
+ url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html";
+ }
+ } else if (category === "members") {
+ url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#";
+ if (item.u) {
+ url += item.u;
+ } else {
+ url += item.l;
+ }
+ } else if (category === "searchTags") {
+ url += item.u;
+ }
+ item.url = url;
+ return url;
+}
+function createMatcher(term, camelCase) {
+ if (camelCase && !isUpperCase(term)) {
+ return null; // no need for camel-case matcher for lower case query
+ }
+ var pattern = "";
+ var upperCase = [];
+ term.trim().split(/\s+/).forEach(function(w, index, array) {
+ var tokens = w.split(/(?=[A-Z,.()<>?[\/])/);
+ for (var i = 0; i < tokens.length; i++) {
+ var s = tokens[i];
+ // ',' and '?' are the only delimiters commonly followed by space in java signatures
+ pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")";
+ upperCase.push(false);
+ var isWordToken = /\w$/.test(s);
+ if (isWordToken) {
+ if (i === tokens.length - 1 && index < array.length - 1) {
+ // space in query string matches all delimiters
+ pattern += "(.*?)";
+ upperCase.push(isUpperCase(s[0]));
+ } else {
+ if (!camelCase && isUpperCase(s) && s.length === 1) {
+ pattern += "()";
+ } else {
+ pattern += "([a-z0-9$<>?[\\]]*?)";
+ }
+ upperCase.push(isUpperCase(s[0]));
+ }
+ } else {
+ pattern += "()";
+ upperCase.push(false);
+ }
+ }
+ });
+ var re = new RegExp(pattern, "gi");
+ re.upperCase = upperCase;
+ return re;
+}
+function findMatch(matcher, input, startOfName, endOfName) {
+ var from = startOfName;
+ matcher.lastIndex = from;
+ var match = matcher.exec(input);
+ // Expand search area until we get a valid result or reach the beginning of the string
+ while (!match || match.index + match[0].length < startOfName || endOfName < match.index) {
+ if (from === 0) {
+ return NO_MATCH;
+ }
+ from = input.lastIndexOf(".", from - 2) + 1;
+ matcher.lastIndex = from;
+ match = matcher.exec(input);
+ }
+ var boundaries = [];
+ var matchEnd = match.index + match[0].length;
+ var score = 5;
+ var start = match.index;
+ var prevEnd = -1;
+ for (var i = 1; i < match.length; i += 2) {
+ var isUpper = isUpperCase(input[start]);
+ var isMatcherUpper = matcher.upperCase[i];
+ // capturing groups come in pairs, match and non-match
+ boundaries.push(start, start + match[i].length);
+ // make sure groups are anchored on a left word boundary
+ var prevChar = input[start - 1] || "";
+ var nextChar = input[start + 1] || "";
+ if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) {
+ if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) {
+ score -= 0.1;
+ } else if (isMatcherUpper && start === prevEnd) {
+ score -= isUpper ? 0.1 : 1.0;
+ } else {
+ return NO_MATCH;
+ }
+ }
+ prevEnd = start + match[i].length;
+ start += match[i].length + match[i + 1].length;
+
+ // lower score for parts of the name that are missing
+ if (match[i + 1] && prevEnd < endOfName) {
+ score -= rateNoise(match[i + 1]);
+ }
+ }
+ // lower score if a type name contains unmatched camel-case parts
+ if (input[matchEnd - 1] !== "." && endOfName > matchEnd)
+ score -= rateNoise(input.slice(matchEnd, endOfName));
+ score -= rateNoise(input.slice(0, Math.max(startOfName, match.index)));
+
+ if (score <= 0) {
+ return NO_MATCH;
+ }
+ return {
+ input: input,
+ score: score,
+ boundaries: boundaries
+ };
+}
+function isUpperCase(s) {
+ return s !== s.toLowerCase();
+}
+function isLowerCase(s) {
+ return s !== s.toUpperCase();
+}
+function rateNoise(str) {
+ return (str.match(/([.(])/g) || []).length / 5
+ + (str.match(/([A-Z]+)/g) || []).length / 10
+ + str.length / 20;
+}
+function doSearch(request, response) {
+ var term = request.term.trim();
+ var maxResults = request.maxResults || MAX_RESULTS;
+ if (term.length === 0) {
+ return this.close();
+ }
+ var matcher = {
+ plainMatcher: createMatcher(term, false),
+ camelCaseMatcher: createMatcher(term, true)
+ }
+ var indexLoaded = indexFilesLoaded();
+
+ function getPrefix(item, category) {
+ switch (category) {
+ case "packages":
+ return checkUnnamed(item.m, "/");
+ case "types":
+ return checkUnnamed(item.p, ".");
+ case "members":
+ return checkUnnamed(item.p, ".") + item.c + ".";
+ default:
+ return "";
+ }
+ }
+ function useQualifiedName(category) {
+ switch (category) {
+ case "packages":
+ return /[\s/]/.test(term);
+ case "types":
+ case "members":
+ return /[\s.]/.test(term);
+ default:
+ return false;
+ }
+ }
+ function searchIndex(indexArray, category) {
+ var matches = [];
+ if (!indexArray) {
+ if (!indexLoaded) {
+ matches.push({ l: messages.loading, category: category });
+ }
+ return matches;
+ }
+ $.each(indexArray, function (i, item) {
+ var prefix = getPrefix(item, category);
+ var simpleName = item.l;
+ var qualifiedName = prefix + simpleName;
+ var useQualified = useQualifiedName(category);
+ var input = useQualified ? qualifiedName : simpleName;
+ var startOfName = useQualified ? prefix.length : 0;
+ var endOfName = category === "members" && input.indexOf("(", startOfName) > -1
+ ? input.indexOf("(", startOfName) : input.length;
+ var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName);
+ if (m === NO_MATCH && matcher.camelCaseMatcher) {
+ m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName);
+ }
+ if (m !== NO_MATCH) {
+ m.indexItem = item;
+ m.prefix = prefix;
+ m.category = category;
+ if (!useQualified) {
+ m.input = qualifiedName;
+ m.boundaries = m.boundaries.map(function(b) {
+ return b + prefix.length;
+ });
+ }
+ matches.push(m);
+ }
+ return true;
+ });
+ return matches.sort(function(e1, e2) {
+ return e2.score - e1.score;
+ }).slice(0, maxResults);
+ }
+
+ var result = searchIndex(moduleSearchIndex, "modules")
+ .concat(searchIndex(packageSearchIndex, "packages"))
+ .concat(searchIndex(typeSearchIndex, "types"))
+ .concat(searchIndex(memberSearchIndex, "members"))
+ .concat(searchIndex(tagSearchIndex, "searchTags"));
+
+ if (!indexLoaded) {
+ updateSearchResults = function() {
+ doSearch(request, response);
+ }
+ } else {
+ updateSearchResults = function() {};
+ }
+ response(result);
+}
+// JQuery search menu implementation
+$.widget("custom.catcomplete", $.ui.autocomplete, {
+ _create: function() {
+ this._super();
+ this.widget().menu("option", "items", "> .result-item");
+ // workaround for search result scrolling
+ this.menu._scrollIntoView = function _scrollIntoView( item ) {
+ var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
+ if ( this._hasScroll() ) {
+ borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
+ paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
+ offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
+ scroll = this.activeMenu.scrollTop();
+ elementHeight = this.activeMenu.height() - 26;
+ itemHeight = item.outerHeight();
+
+ if ( offset < 0 ) {
+ this.activeMenu.scrollTop( scroll + offset );
+ } else if ( offset + itemHeight > elementHeight ) {
+ this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
+ }
+ }
+ };
+ },
+ _renderMenu: function(ul, items) {
+ var currentCategory = "";
+ var widget = this;
+ widget.menu.bindings = $();
+ $.each(items, function(index, item) {
+ if (item.category && item.category !== currentCategory) {
+ ul.append("" + categories[item.category] + " ");
+ currentCategory = item.category;
+ }
+ var li = widget._renderItemData(ul, item);
+ if (item.category) {
+ li.attr("aria-label", categories[item.category] + " : " + item.l);
+ } else {
+ li.attr("aria-label", item.l);
+ }
+ li.attr("class", "result-item");
+ });
+ ul.append("Go to search page ");
+ },
+ _renderItem: function(ul, item) {
+ var li = $(" ").appendTo(ul);
+ var div = $("
").appendTo(li);
+ var label = item.l
+ ? item.l
+ : getHighlightedText(item.input, item.boundaries, 0, item.input.length);
+ var idx = item.indexItem;
+ if (item.category === "searchTags" && idx && idx.h) {
+ if (idx.d) {
+ div.html(label + " (" + idx.h + ") "
+ + idx.d + " ");
+ } else {
+ div.html(label + " (" + idx.h + ") ");
+ }
+ } else {
+ div.html(label);
+ }
+ return li;
+ }
+});
+$(function() {
+ var expanded = false;
+ var windowWidth;
+ function collapse() {
+ if (expanded) {
+ $("div#navbar-top").removeAttr("style");
+ $("button#navbar-toggle-button")
+ .removeClass("expanded")
+ .attr("aria-expanded", "false");
+ expanded = false;
+ }
+ }
+ $("button#navbar-toggle-button").click(function (e) {
+ if (expanded) {
+ collapse();
+ } else {
+ var navbar = $("div#navbar-top");
+ navbar.height(navbar.prop("scrollHeight"));
+ $("button#navbar-toggle-button")
+ .addClass("expanded")
+ .attr("aria-expanded", "true");
+ expanded = true;
+ windowWidth = window.innerWidth;
+ }
+ });
+ $("ul.sub-nav-list-small li a").click(collapse);
+ $("input#search-input").focus(collapse);
+ $("main").click(collapse);
+ $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) {
+ // Create anchor links for headers with an associated id attribute
+ var hdr = $(el);
+ var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id");
+ if (id) {
+ hdr.append(" ");
+ }
+ });
+ $(window).on("orientationchange", collapse).on("resize", function(e) {
+ if (expanded && windowWidth !== window.innerWidth) collapse();
+ });
+ var search = $("#search-input");
+ var reset = $("#reset-button");
+ search.catcomplete({
+ minLength: 1,
+ delay: 200,
+ source: doSearch,
+ response: function(event, ui) {
+ if (!ui.content.length) {
+ ui.content.push({ l: messages.noResult });
+ } else {
+ $("#search-input").empty();
+ }
+ },
+ autoFocus: true,
+ focus: function(event, ui) {
+ return false;
+ },
+ position: {
+ collision: "flip"
+ },
+ select: function(event, ui) {
+ if (ui.item.indexItem) {
+ var url = getURL(ui.item.indexItem, ui.item.category);
+ window.location.href = pathtoroot + url;
+ $("#search-input").focus();
+ }
+ }
+ });
+ search.val('');
+ search.prop("disabled", false);
+ reset.prop("disabled", false);
+ reset.click(function() {
+ search.val('').focus();
+ });
+ search.focus();
+});
diff --git a/pi4micronaut-utils/src/docs/javadoc/stylesheet.css b/pi4micronaut-utils/src/docs/javadoc/stylesheet.css
new file mode 100644
index 00000000..f71489f8
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/stylesheet.css
@@ -0,0 +1,1272 @@
+/*
+ * Javadoc style sheet
+ */
+
+@import url('resources/fonts/dejavu.css');
+
+/*
+ * These CSS custom properties (variables) define the core color and font
+ * properties used in this stylesheet.
+ */
+:root {
+ /* body, block and code fonts */
+ --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
+ --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+ --code-font-family: 'DejaVu Sans Mono', monospace;
+ /* Base font sizes for body and code elements */
+ --body-font-size: 14px;
+ --code-font-size: 14px;
+ /* Text colors for body and block elements */
+ --body-text-color: #353833;
+ --block-text-color: #474747;
+ /* Background colors for various structural elements */
+ --body-background-color: #ffffff;
+ --section-background-color: #f8f8f8;
+ --detail-background-color: #ffffff;
+ /* Colors for navigation bar and table captions */
+ --navbar-background-color: #4D7A97;
+ --navbar-text-color: #ffffff;
+ /* Background color for subnavigation and various headers */
+ --subnav-background-color: #dee3e9;
+ /* Background and text colors for selected tabs and navigation items */
+ --selected-background-color: #f8981d;
+ --selected-text-color: #253441;
+ --selected-link-color: #1f389c;
+ /* Background colors for generated tables */
+ --even-row-color: #ffffff;
+ --odd-row-color: #eeeeef;
+ /* Text color for page title */
+ --title-color: #2c4557;
+ /* Text colors for links */
+ --link-color: #4A6782;
+ --link-color-active: #bb7a2a;
+ /* Snippet colors */
+ --snippet-background-color: #ebecee;
+ --snippet-text-color: var(--block-text-color);
+ --snippet-highlight-color: #f7c590;
+ /* Border colors for structural elements and user defined tables */
+ --border-color: #ededed;
+ --table-border-color: #000000;
+ /* Search input colors */
+ --search-input-background-color: #ffffff;
+ --search-input-text-color: #000000;
+ --search-input-placeholder-color: #909090;
+ /* Highlight color for active search tag target */
+ --search-tag-highlight-color: #ffff00;
+ /* Adjustments for icon and active background colors of copy-to-clipboard buttons */
+ --copy-icon-brightness: 100%;
+ --copy-button-background-color-active: rgba(168, 168, 176, 0.3);
+ /* Colors for invalid tag notifications */
+ --invalid-tag-background-color: #ffe6e6;
+ --invalid-tag-text-color: #000000;
+}
+/*
+ * Styles for individual HTML elements.
+ *
+ * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
+ * HTML element throughout the page.
+ */
+body {
+ background-color:var(--body-background-color);
+ color:var(--body-text-color);
+ font-family:var(--body-font-family);
+ font-size:var(--body-font-size);
+ margin:0;
+ padding:0;
+ height:100%;
+ width:100%;
+}
+iframe {
+ margin:0;
+ padding:0;
+ height:100%;
+ width:100%;
+ overflow-y:scroll;
+ border:none;
+}
+a:link, a:visited {
+ text-decoration:none;
+ color:var(--link-color);
+}
+a[href]:hover, a[href]:focus {
+ text-decoration:none;
+ color:var(--link-color-active);
+}
+pre {
+ font-family:var(--code-font-family);
+ font-size:1em;
+}
+h1 {
+ font-size:1.428em;
+}
+h2 {
+ font-size:1.285em;
+}
+h3 {
+ font-size:1.14em;
+}
+h4 {
+ font-size:1.072em;
+}
+h5 {
+ font-size:1.001em;
+}
+h6 {
+ font-size:0.93em;
+}
+/* Disable font boosting for selected elements */
+h1, h2, h3, h4, h5, h6, div.member-signature {
+ max-height: 1000em;
+}
+ul {
+ list-style-type:disc;
+}
+code, tt {
+ font-family:var(--code-font-family);
+}
+:not(h1, h2, h3, h4, h5, h6) > code,
+:not(h1, h2, h3, h4, h5, h6) > tt {
+ font-size:var(--code-font-size);
+ padding-top:4px;
+ margin-top:8px;
+ line-height:1.4em;
+}
+dt code {
+ font-family:var(--code-font-family);
+ font-size:1em;
+ padding-top:4px;
+}
+.summary-table dt code {
+ font-family:var(--code-font-family);
+ font-size:1em;
+ vertical-align:top;
+ padding-top:4px;
+}
+sup {
+ font-size:8px;
+}
+button {
+ font-family: var(--body-font-family);
+ font-size: 1em;
+}
+/*
+ * Styles for HTML generated by javadoc.
+ *
+ * These are style classes that are used by the standard doclet to generate HTML documentation.
+ */
+
+/*
+ * Styles for document title and copyright.
+ */
+.about-language {
+ float:right;
+ padding:0 21px 8px 8px;
+ font-size:0.915em;
+ margin-top:-9px;
+ height:2.9em;
+}
+.legal-copy {
+ margin-left:.5em;
+}
+/*
+ * Styles for navigation bar.
+ */
+@media screen {
+ div.flex-box {
+ position:fixed;
+ display:flex;
+ flex-direction:column;
+ height: 100%;
+ width: 100%;
+ }
+ header.flex-header {
+ flex: 0 0 auto;
+ }
+ div.flex-content {
+ flex: 1 1 auto;
+ overflow-y: auto;
+ }
+}
+.top-nav {
+ background-color:var(--navbar-background-color);
+ color:var(--navbar-text-color);
+ float:left;
+ width:100%;
+ clear:right;
+ min-height:2.8em;
+ padding:10px 0 0 0;
+ overflow:hidden;
+ font-size:0.857em;
+}
+button#navbar-toggle-button {
+ display:none;
+}
+ul.sub-nav-list-small {
+ display: none;
+}
+.sub-nav {
+ background-color:var(--subnav-background-color);
+ float:left;
+ width:100%;
+ overflow:hidden;
+ font-size:0.857em;
+}
+.sub-nav div {
+ clear:left;
+ float:left;
+ padding:6px;
+ text-transform:uppercase;
+}
+.sub-nav .sub-nav-list {
+ padding-top:4px;
+}
+ul.nav-list {
+ display:block;
+ margin:0 25px 0 0;
+ padding:0;
+}
+ul.sub-nav-list {
+ float:left;
+ margin:0 25px 0 0;
+ padding:0;
+}
+ul.nav-list li {
+ list-style:none;
+ float:left;
+ padding: 5px 6px;
+ text-transform:uppercase;
+}
+.sub-nav .nav-list-search {
+ float:right;
+ margin:0;
+ padding:6px;
+ clear:none;
+ text-align:right;
+ position:relative;
+}
+ul.sub-nav-list li {
+ list-style:none;
+ float:left;
+}
+.top-nav a:link, .top-nav a:active, .top-nav a:visited {
+ color:var(--navbar-text-color);
+ text-decoration:none;
+ text-transform:uppercase;
+}
+.top-nav a:hover {
+ color:var(--link-color-active);
+}
+.nav-bar-cell1-rev {
+ background-color:var(--selected-background-color);
+ color:var(--selected-text-color);
+ margin: auto 5px;
+}
+.skip-nav {
+ position:absolute;
+ top:auto;
+ left:-9999px;
+ overflow:hidden;
+}
+/*
+ * Hide navigation links and search box in print layout
+ */
+@media print {
+ ul.nav-list, div.sub-nav {
+ display:none;
+ }
+}
+/*
+ * Styles for page header.
+ */
+.title {
+ color:var(--title-color);
+ margin:10px 0;
+}
+.sub-title {
+ margin:5px 0 0 0;
+}
+ul.contents-list {
+ margin: 0 0 15px 0;
+ padding: 0;
+ list-style: none;
+}
+ul.contents-list li {
+ font-size:0.93em;
+}
+/*
+ * Styles for headings.
+ */
+body.class-declaration-page .summary h2,
+body.class-declaration-page .details h2,
+body.class-use-page h2,
+body.module-declaration-page .block-list h2 {
+ font-style: italic;
+ padding:0;
+ margin:15px 0;
+}
+body.class-declaration-page .summary h3,
+body.class-declaration-page .details h3,
+body.class-declaration-page .summary .inherited-list h2 {
+ background-color:var(--subnav-background-color);
+ border:1px solid var(--border-color);
+ margin:0 0 6px -8px;
+ padding:7px 5px;
+}
+/*
+ * Styles for page layout containers.
+ */
+main {
+ clear:both;
+ padding:10px 20px;
+ position:relative;
+}
+dl.notes > dt {
+ font-family: var(--body-font-family);
+ font-size:0.856em;
+ font-weight:bold;
+ margin:10px 0 0 0;
+ color:var(--body-text-color);
+}
+dl.notes > dd {
+ margin:5px 10px 10px 0;
+ font-size:1em;
+ font-family:var(--block-font-family)
+}
+dl.name-value > dt {
+ margin-left:1px;
+ font-size:1.1em;
+ display:inline;
+ font-weight:bold;
+}
+dl.name-value > dd {
+ margin:0 0 0 1px;
+ font-size:1.1em;
+ display:inline;
+}
+/*
+ * Styles for lists.
+ */
+li.circle {
+ list-style:circle;
+}
+ul.horizontal li {
+ display:inline;
+ font-size:0.9em;
+}
+div.inheritance {
+ margin:0;
+ padding:0;
+}
+div.inheritance div.inheritance {
+ margin-left:2em;
+}
+ul.block-list,
+ul.details-list,
+ul.member-list,
+ul.summary-list {
+ margin:10px 0 10px 0;
+ padding:0;
+}
+ul.block-list > li,
+ul.details-list > li,
+ul.member-list > li,
+ul.summary-list > li {
+ list-style:none;
+ margin-bottom:15px;
+ line-height:1.4;
+}
+ul.ref-list {
+ padding:0;
+ margin:0;
+}
+ul.ref-list > li {
+ list-style:none;
+}
+.summary-table dl, .summary-table dl dt, .summary-table dl dd {
+ margin-top:0;
+ margin-bottom:1px;
+}
+ul.tag-list, ul.tag-list-long {
+ padding-left: 0;
+ list-style: none;
+}
+ul.tag-list li {
+ display: inline;
+}
+ul.tag-list li:not(:last-child):after,
+ul.tag-list-long li:not(:last-child):after
+{
+ content: ", ";
+ white-space: pre-wrap;
+}
+ul.preview-feature-list {
+ list-style: none;
+ margin:0;
+ padding:0.1em;
+ line-height: 1.6em;
+}
+/*
+ * Styles for tables.
+ */
+.summary-table, .details-table {
+ width:100%;
+ border-spacing:0;
+ border:1px solid var(--border-color);
+ border-top:0;
+ padding:0;
+}
+.caption {
+ position:relative;
+ text-align:left;
+ background-repeat:no-repeat;
+ color:var(--selected-text-color);
+ clear:none;
+ overflow:hidden;
+ padding: 10px 0 0 1px;
+ margin:0;
+}
+.caption a:link, .caption a:visited {
+ color:var(--selected-link-color);
+}
+.caption a:hover,
+.caption a:active {
+ color:var(--navbar-text-color);
+}
+.caption span {
+ font-weight:bold;
+ white-space:nowrap;
+ padding:5px 12px 7px 12px;
+ display:inline-block;
+ float:left;
+ background-color:var(--selected-background-color);
+ border: none;
+ height:16px;
+}
+div.table-tabs {
+ padding:10px 0 0 1px;
+ margin:10px 0 0 0;
+}
+div.table-tabs > button {
+ border: none;
+ cursor: pointer;
+ padding: 5px 12px 7px 12px;
+ font-weight: bold;
+ margin-right: 8px;
+}
+div.table-tabs > .active-table-tab {
+ background: var(--selected-background-color);
+ color: var(--selected-text-color);
+}
+div.table-tabs > button.table-tab {
+ background: var(--navbar-background-color);
+ color: var(--navbar-text-color);
+}
+.two-column-search-results {
+ display: grid;
+ grid-template-columns: minmax(400px, max-content) minmax(400px, auto);
+}
+div.checkboxes {
+ line-height: 2em;
+}
+div.checkboxes > span {
+ margin-left: 10px;
+}
+div.checkboxes > label {
+ margin-left: 8px;
+ white-space: nowrap;
+}
+div.checkboxes > label > input {
+ margin: 0 2px;
+}
+.two-column-summary {
+ display: grid;
+ grid-template-columns: minmax(25%, max-content) minmax(25%, auto);
+}
+.three-column-summary {
+ display: grid;
+ grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto);
+}
+.three-column-release-summary {
+ display: grid;
+ grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto);
+}
+.four-column-summary {
+ display: grid;
+ grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto);
+}
+@media screen and (max-width: 1000px) {
+ .four-column-summary {
+ display: grid;
+ grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
+ }
+}
+@media screen and (max-width: 800px) {
+ .two-column-search-results {
+ display: grid;
+ grid-template-columns: minmax(40%, max-content) minmax(40%, auto);
+ }
+ .three-column-summary {
+ display: grid;
+ grid-template-columns: minmax(10%, max-content) minmax(25%, auto);
+ }
+ .three-column-release-summary {
+ display: grid;
+ grid-template-columns: minmax(70%, max-content) minmax(30%, max-content)
+ }
+ .three-column-summary .col-last,
+ .three-column-release-summary .col-last{
+ grid-column-end: span 2;
+ }
+}
+@media screen and (max-width: 600px) {
+ .two-column-summary {
+ display: grid;
+ grid-template-columns: 1fr;
+ }
+}
+.summary-table > div, .details-table > div {
+ text-align:left;
+ padding: 8px 3px 3px 7px;
+ overflow-x: auto;
+ scrollbar-width: thin;
+}
+.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name {
+ vertical-align:top;
+ padding-right:0;
+ padding-top:8px;
+ padding-bottom:3px;
+}
+.table-header {
+ background:var(--subnav-background-color);
+ font-weight: bold;
+}
+/* Sortable table columns */
+.table-header[onclick] {
+ cursor: pointer;
+}
+.table-header[onclick]::after {
+ content:"";
+ display:inline-block;
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ ');
+ background-size:100% 100%;
+ width:9px;
+ height:14px;
+ margin-left:4px;
+ margin-bottom:-3px;
+}
+.table-header[onclick].sort-asc::after {
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+
+}
+.table-header[onclick].sort-desc::after {
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+}
+.col-first, .col-first {
+ font-size:0.93em;
+}
+.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last {
+ font-size:0.93em;
+}
+.col-first, .col-second, .col-constructor-name {
+ vertical-align:top;
+ overflow: auto;
+}
+.col-last {
+ white-space:normal;
+}
+.col-first a:link, .col-first a:visited,
+.col-second a:link, .col-second a:visited,
+.col-first a:link, .col-first a:visited,
+.col-second a:link, .col-second a:visited,
+.col-constructor-name a:link, .col-constructor-name a:visited,
+.col-summary-item-name a:link, .col-summary-item-name a:visited {
+ font-weight:bold;
+}
+.even-row-color, .even-row-color .table-header {
+ background-color:var(--even-row-color);
+}
+.odd-row-color, .odd-row-color .table-header {
+ background-color:var(--odd-row-color);
+}
+/*
+ * Styles for contents.
+ */
+div.block {
+ font-size:var(--body-font-size);
+ font-family:var(--block-font-family);
+}
+.col-last div {
+ padding-top:0;
+}
+.col-last a {
+ padding-bottom:3px;
+}
+.module-signature,
+.package-signature,
+.type-signature,
+.member-signature {
+ font-family:var(--code-font-family);
+ font-size:1em;
+ margin:14px 0;
+ white-space: pre-wrap;
+}
+.module-signature,
+.package-signature,
+.type-signature {
+ margin-top: 0;
+}
+.member-signature .type-parameters-long,
+.member-signature .parameters,
+.member-signature .exceptions {
+ display: inline-block;
+ vertical-align: top;
+ white-space: pre;
+}
+.member-signature .type-parameters {
+ white-space: normal;
+}
+/*
+ * Styles for formatting effect.
+ */
+.source-line-no {
+ /* Color of line numbers in source pages can be set via custom property below */
+ color:var(--source-linenumber-color, green);
+ padding:0 30px 0 0;
+}
+.block {
+ display:block;
+ margin:0 10px 5px 0;
+ color:var(--block-text-color);
+}
+.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link,
+.module-label-in-package, .module-label-in-type, .package-label-in-type,
+.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label {
+ font-weight:bold;
+}
+.deprecation-comment, .help-footnote, .preview-comment {
+ font-style:italic;
+}
+.deprecation-block {
+ font-size:1em;
+ font-family:var(--block-font-family);
+ border-style:solid;
+ border-width:thin;
+ border-radius:10px;
+ padding:10px;
+ margin-bottom:10px;
+ margin-right:10px;
+ display:inline-block;
+}
+.preview-block {
+ font-size:1em;
+ font-family:var(--block-font-family);
+ border-style:solid;
+ border-width:thin;
+ border-radius:10px;
+ padding:10px;
+ margin-bottom:10px;
+ margin-right:10px;
+ display:inline-block;
+}
+div.block div.deprecation-comment {
+ font-style:normal;
+}
+details.invalid-tag, span.invalid-tag {
+ font-size:1em;
+ font-family:var(--block-font-family);
+ color: var(--invalid-tag-text-color);
+ background: var(--invalid-tag-background-color);
+ border: thin solid var(--table-border-color);
+ border-radius:2px;
+ padding: 2px 4px;
+ display:inline-block;
+}
+details summary {
+ cursor: pointer;
+}
+/*
+ * Styles specific to HTML5 elements.
+ */
+main, nav, header, footer, section {
+ display:block;
+}
+/*
+ * Styles for javadoc search.
+ */
+.ui-state-active {
+ /* Overrides the color of selection used in jQuery UI */
+ background: var(--selected-background-color);
+ border: 1px solid var(--selected-background-color);
+ color: var(--selected-text-color);
+}
+.ui-autocomplete-category {
+ font-weight:bold;
+ font-size:15px;
+ padding:7px 0 7px 3px;
+ background-color:var(--navbar-background-color);
+ color:var(--navbar-text-color);
+}
+.ui-autocomplete {
+ max-height:85%;
+ max-width:65%;
+ overflow-y:auto;
+ overflow-x:auto;
+ scrollbar-width: thin;
+ white-space:nowrap;
+ box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
+}
+ul.ui-autocomplete {
+ position:fixed;
+ z-index:1;
+ background-color: var(--body-background-color);
+}
+ul.ui-autocomplete li {
+ float:left;
+ clear:both;
+ min-width:100%;
+}
+ul.ui-autocomplete li.ui-static-link {
+ position:sticky;
+ bottom:0;
+ left:0;
+ background: var(--subnav-background-color);
+ padding: 5px 0;
+ font-family: var(--body-font-family);
+ font-size: 0.93em;
+ font-weight: bolder;
+ z-index: 2;
+}
+li.ui-static-link a, li.ui-static-link a:visited {
+ text-decoration:none;
+ color:var(--link-color);
+ float:right;
+ margin-right:20px;
+}
+.ui-autocomplete .result-item {
+ font-size: inherit;
+}
+.ui-autocomplete .result-highlight {
+ font-weight:bold;
+}
+#search-input, #page-search-input {
+ background-image:url('resources/glass.png');
+ background-size:13px;
+ background-repeat:no-repeat;
+ background-position:2px 3px;
+ background-color: var(--search-input-background-color);
+ color: var(--search-input-text-color);
+ border-color: var(--border-color);
+ padding-left:20px;
+ width: 250px;
+ margin: 0;
+}
+#search-input {
+ margin-left: 4px;
+}
+#reset-button {
+ background-color: transparent;
+ background-image:url('resources/x.png');
+ background-repeat:no-repeat;
+ background-size:contain;
+ border:0;
+ border-radius:0;
+ width:12px;
+ height:12px;
+ position:absolute;
+ right:12px;
+ top:10px;
+ font-size:0;
+}
+::placeholder {
+ color:var(--search-input-placeholder-color);
+ opacity: 1;
+}
+.search-tag-desc-result {
+ font-style:italic;
+ font-size:11px;
+}
+.search-tag-holder-result {
+ font-style:italic;
+ font-size:12px;
+}
+.search-tag-result:target {
+ background-color:var(--search-tag-highlight-color);
+}
+details.page-search-details {
+ display: inline-block;
+}
+div#result-container {
+ font-size: 1em;
+}
+div#result-container a.search-result-link {
+ padding: 0;
+ margin: 4px 0;
+ width: 100%;
+}
+#result-container .result-highlight {
+ font-weight:bolder;
+}
+.page-search-info {
+ background-color: var(--subnav-background-color);
+ border-radius: 3px;
+ border: 0 solid var(--border-color);
+ padding: 0 8px;
+ overflow: hidden;
+ height: 0;
+ transition: all 0.2s ease;
+}
+div.table-tabs > button.table-tab {
+ background: var(--navbar-background-color);
+ color: var(--navbar-text-color);
+}
+.page-search-header {
+ padding: 5px 12px 7px 12px;
+ font-weight: bold;
+ margin-right: 3px;
+ background-color:var(--navbar-background-color);
+ color:var(--navbar-text-color);
+ display: inline-block;
+}
+button.page-search-header {
+ border: none;
+ cursor: pointer;
+}
+span#page-search-link {
+ text-decoration: underline;
+}
+.module-graph span, .sealed-graph span {
+ display:none;
+ position:absolute;
+}
+.module-graph:hover span, .sealed-graph:hover span {
+ display:block;
+ margin: -100px 0 0 100px;
+ z-index: 1;
+}
+.inherited-list {
+ margin: 10px 0 10px 0;
+}
+section.class-description {
+ line-height: 1.4;
+}
+.summary section[class$="-summary"], .details section[class$="-details"],
+.class-uses .detail, .serialized-class-details {
+ padding: 0 20px 5px 10px;
+ border: 1px solid var(--border-color);
+ background-color: var(--section-background-color);
+}
+.inherited-list, section[class$="-details"] .detail {
+ padding:0 0 5px 8px;
+ background-color:var(--detail-background-color);
+ border:none;
+}
+.vertical-separator {
+ padding: 0 5px;
+}
+ul.help-section-list {
+ margin: 0;
+}
+ul.help-subtoc > li {
+ display: inline-block;
+ padding-right: 5px;
+ font-size: smaller;
+}
+ul.help-subtoc > li::before {
+ content: "\2022" ;
+ padding-right:2px;
+}
+.help-note {
+ font-style: italic;
+}
+/*
+ * Indicator icon for external links.
+ */
+main a[href*="://"]::after {
+ content:"";
+ display:inline-block;
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+ background-size:100% 100%;
+ width:7px;
+ height:7px;
+ margin-left:2px;
+ margin-bottom:4px;
+}
+main a[href*="://"]:hover::after,
+main a[href*="://"]:focus::after {
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+}
+/*
+ * Styles for header/section anchor links
+ */
+a.anchor-link {
+ opacity: 0;
+ transition: opacity 0.1s;
+}
+:hover > a.anchor-link {
+ opacity: 80%;
+}
+a.anchor-link:hover,
+a.anchor-link:focus-visible,
+a.anchor-link.visible {
+ opacity: 100%;
+}
+a.anchor-link > img {
+ width: 0.9em;
+ height: 0.9em;
+}
+/*
+ * Styles for copy-to-clipboard buttons
+ */
+button.copy {
+ opacity: 70%;
+ border: none;
+ border-radius: 3px;
+ position: relative;
+ background:none;
+ transition: opacity 0.3s;
+ cursor: pointer;
+}
+:hover > button.copy {
+ opacity: 80%;
+}
+button.copy:hover,
+button.copy:active,
+button.copy:focus-visible,
+button.copy.visible {
+ opacity: 100%;
+}
+button.copy img {
+ position: relative;
+ background: none;
+ filter: brightness(var(--copy-icon-brightness));
+}
+button.copy:active {
+ background-color: var(--copy-button-background-color-active);
+}
+button.copy span {
+ color: var(--body-text-color);
+ position: relative;
+ top: -0.1em;
+ transition: all 0.1s;
+ font-size: 0.76rem;
+ line-height: 1.2em;
+ opacity: 0;
+}
+button.copy:hover span,
+button.copy:focus-visible span,
+button.copy.visible span {
+ opacity: 100%;
+}
+/* search page copy button */
+button#page-search-copy {
+ margin-left: 0.4em;
+ padding:0.3em;
+ top:0.13em;
+}
+button#page-search-copy img {
+ width: 1.2em;
+ height: 1.2em;
+ padding: 0.01em 0;
+ top: 0.15em;
+}
+button#page-search-copy span {
+ color: var(--body-text-color);
+ line-height: 1.2em;
+ padding: 0.2em;
+ top: -0.18em;
+}
+div.page-search-info:hover button#page-search-copy span {
+ opacity: 100%;
+}
+/* snippet copy button */
+button.snippet-copy {
+ position: absolute;
+ top: 6px;
+ right: 6px;
+ height: 1.7em;
+ padding: 2px;
+}
+button.snippet-copy img {
+ width: 18px;
+ height: 18px;
+ padding: 0.05em 0;
+}
+button.snippet-copy span {
+ line-height: 1.2em;
+ padding: 0.2em;
+ position: relative;
+ top: -0.5em;
+}
+div.snippet-container:hover button.snippet-copy span {
+ opacity: 100%;
+}
+/*
+ * Styles for user-provided tables.
+ *
+ * borderless:
+ * No borders, vertical margins, styled caption.
+ * This style is provided for use with existing doc comments.
+ * In general, borderless tables should not be used for layout purposes.
+ *
+ * plain:
+ * Plain borders around table and cells, vertical margins, styled caption.
+ * Best for small tables or for complex tables for tables with cells that span
+ * rows and columns, when the "striped" style does not work well.
+ *
+ * striped:
+ * Borders around the table and vertical borders between cells, striped rows,
+ * vertical margins, styled caption.
+ * Best for tables that have a header row, and a body containing a series of simple rows.
+ */
+
+table.borderless,
+table.plain,
+table.striped {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+table.borderless > caption,
+table.plain > caption,
+table.striped > caption {
+ font-weight: bold;
+ font-size: smaller;
+}
+table.borderless th, table.borderless td,
+table.plain th, table.plain td,
+table.striped th, table.striped td {
+ padding: 2px 5px;
+}
+table.borderless,
+table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
+table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
+ border: none;
+}
+table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
+ background-color: transparent;
+}
+table.plain {
+ border-collapse: collapse;
+ border: 1px solid var(--table-border-color);
+}
+table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
+ background-color: transparent;
+}
+table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
+table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
+ border: 1px solid var(--table-border-color);
+}
+table.striped {
+ border-collapse: collapse;
+ border: 1px solid var(--table-border-color);
+}
+table.striped > thead {
+ background-color: var(--subnav-background-color);
+}
+table.striped > thead > tr > th, table.striped > thead > tr > td {
+ border: 1px solid var(--table-border-color);
+}
+table.striped > tbody > tr:nth-child(even) {
+ background-color: var(--odd-row-color)
+}
+table.striped > tbody > tr:nth-child(odd) {
+ background-color: var(--even-row-color)
+}
+table.striped > tbody > tr > th, table.striped > tbody > tr > td {
+ border-left: 1px solid var(--table-border-color);
+ border-right: 1px solid var(--table-border-color);
+}
+table.striped > tbody > tr > th {
+ font-weight: normal;
+}
+/**
+ * Tweak style for small screens.
+ */
+@media screen and (max-width: 920px) {
+ header.flex-header {
+ max-height: 100vh;
+ overflow-y: auto;
+ }
+ div#navbar-top {
+ height: 2.8em;
+ transition: height 0.35s ease;
+ }
+ ul.nav-list {
+ display: block;
+ width: 40%;
+ float:left;
+ clear: left;
+ margin: 10px 0 0 0;
+ padding: 0;
+ }
+ ul.nav-list li {
+ float: none;
+ padding: 6px;
+ margin-left: 10px;
+ margin-top: 2px;
+ }
+ ul.sub-nav-list-small {
+ display:block;
+ height: 100%;
+ width: 50%;
+ float: right;
+ clear: right;
+ background-color: var(--subnav-background-color);
+ color: var(--body-text-color);
+ margin: 6px 0 0 0;
+ padding: 0;
+ }
+ ul.sub-nav-list-small ul {
+ padding-left: 20px;
+ }
+ ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited {
+ color:var(--link-color);
+ }
+ ul.sub-nav-list-small a:hover {
+ color:var(--link-color-active);
+ }
+ ul.sub-nav-list-small li {
+ list-style:none;
+ float:none;
+ padding: 6px;
+ margin-top: 1px;
+ text-transform:uppercase;
+ }
+ ul.sub-nav-list-small > li {
+ margin-left: 10px;
+ }
+ ul.sub-nav-list-small li p {
+ margin: 5px 0;
+ }
+ div#navbar-sub-list {
+ display: none;
+ }
+ .top-nav a:link, .top-nav a:active, .top-nav a:visited {
+ display: block;
+ }
+ button#navbar-toggle-button {
+ width: 3.4em;
+ height: 2.8em;
+ background-color: transparent;
+ display: block;
+ float: left;
+ border: 0;
+ margin: 0 10px;
+ cursor: pointer;
+ font-size: 10px;
+ }
+ button#navbar-toggle-button .nav-bar-toggle-icon {
+ display: block;
+ width: 24px;
+ height: 3px;
+ margin: 1px 0 4px 0;
+ border-radius: 2px;
+ transition: all 0.1s;
+ background-color: var(--navbar-text-color);
+ }
+ button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) {
+ transform: rotate(45deg);
+ transform-origin: 10% 10%;
+ width: 26px;
+ }
+ button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) {
+ opacity: 0;
+ }
+ button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) {
+ transform: rotate(-45deg);
+ transform-origin: 10% 90%;
+ width: 26px;
+ }
+}
+@media screen and (max-width: 800px) {
+ .about-language {
+ padding-right: 16px;
+ }
+ ul.nav-list li {
+ margin-left: 5px;
+ }
+ ul.sub-nav-list-small > li {
+ margin-left: 5px;
+ }
+ main {
+ padding: 10px;
+ }
+ .summary section[class$="-summary"], .details section[class$="-details"],
+ .class-uses .detail, .serialized-class-details {
+ padding: 0 8px 5px 8px;
+ }
+ body {
+ -webkit-text-size-adjust: none;
+ }
+}
+@media screen and (max-width: 400px) {
+ .about-language {
+ font-size: 10px;
+ padding-right: 12px;
+ }
+}
+@media screen and (max-width: 400px) {
+ .nav-list-search {
+ width: 94%;
+ }
+ #search-input, #page-search-input {
+ width: 70%;
+ }
+}
+@media screen and (max-width: 320px) {
+ .nav-list-search > label {
+ display: none;
+ }
+ .nav-list-search {
+ width: 90%;
+ }
+ #search-input, #page-search-input {
+ width: 80%;
+ }
+}
+
+pre.snippet {
+ background-color: var(--snippet-background-color);
+ color: var(--snippet-text-color);
+ padding: 10px;
+ margin: 12px 0;
+ overflow: auto;
+ white-space: pre;
+}
+div.snippet-container {
+ position: relative;
+}
+@media screen and (max-width: 800px) {
+ pre.snippet {
+ padding-top: 26px;
+ }
+ button.snippet-copy {
+ top: 4px;
+ right: 4px;
+ }
+}
+pre.snippet .italic {
+ font-style: italic;
+}
+pre.snippet .bold {
+ font-weight: bold;
+}
+pre.snippet .highlighted {
+ background-color: var(--snippet-highlight-color);
+ border-radius: 10%;
+}
diff --git a/pi4micronaut-utils/src/docs/javadoc/tag-search-index.js b/pi4micronaut-utils/src/docs/javadoc/tag-search-index.js
new file mode 100644
index 00000000..0367dae6
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/tag-search-index.js
@@ -0,0 +1 @@
+tagSearchIndex = [];updateSearchResults();
\ No newline at end of file
diff --git a/pi4micronaut-utils/src/docs/javadoc/type-search-index.js b/pi4micronaut-utils/src/docs/javadoc/type-search-index.js
new file mode 100644
index 00000000..1f7ac61c
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/type-search-index.js
@@ -0,0 +1 @@
+typeSearchIndex = [{"p":"com.opensourcewithslu.outputdevices","l":"ActiveBuzzerHelper"},{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"com.opensourcewithslu","l":"Application"},{"p":"com.opensourcewithslu.utilities","l":"DigitalInputConfiguration"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","l":"DigitalInputMultiPinConfiguration"},{"p":"com.opensourcewithslu.utilities","l":"DigitalOutputConfiguration"},{"p":"com.opensourcewithslu.utilities","l":"i2cConfiguration"},{"p":"com.opensourcewithslu.outputdevices","l":"LCD1602Helper"},{"p":"com.opensourcewithslu.outputdevices","l":"LEDHelper"},{"p":"com.opensourcewithslu.utilities","l":"MultipinConfiguration"},{"p":"com.opensourcewithslu.inputdevices","l":"PhotoResistorHelper"},{"p":"com.opensourcewithslu.utilities","l":"Pi4JFactory"},{"p":"com.opensourcewithslu.utilities","l":"Pi4JMultipinFactory"},{"p":"com.opensourcewithslu.inputdevices","l":"PIRSensorHelper"},{"p":"com.opensourcewithslu.inputdevices","l":"PushButtonHelper"},{"p":"com.opensourcewithslu.utilities","l":"PwmConfiguration"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","l":"PwmMultiPinConfiguration"},{"p":"com.opensourcewithslu.inputdevices","l":"RFidHelper"},{"p":"com.opensourcewithslu.outputdevices","l":"RGBLEDHelper"},{"p":"com.opensourcewithslu.inputdevices","l":"RotaryEncoderHelper"},{"p":"com.opensourcewithslu.inputdevices","l":"SlideSwitchHelper"},{"p":"com.opensourcewithslu.utilities","l":"SpiConfiguration"},{"p":"com.opensourcewithslu.inputdevices","l":"TouchSwitchHelper"}];updateSearchResults();
\ No newline at end of file
From 375d03a8aa8bf2866976bcd7f8c9b97c82ad5a6e Mon Sep 17 00:00:00 2001
From: adelgadoj3 <123115416+adelgadoj3@users.noreply.github.com>
Date: Wed, 13 Mar 2024 18:38:35 -0500
Subject: [PATCH 5/8] Passive Buzzer Implementation (#182)
* Implemented passive buzzer helper
* Implemented passive buzzer controller and updated yaml to contain passive buzzer.
* Created additional test functions for the passive buzzer. Modified the sequence function.
* Refactored functions in helper to appropriately change frequencies. Corresponding function in the controller needs work to accept parameters from an array.
* Modified setFrequencies function to accept File as parameter. Has not been tested.
* Modified and tested the functionality of the Helper: setFrequencies method & Controller: defineFrequency method. Added comments for usage of the controller method to ensure ease of use.
* Resolved lack of javadoc comments
* Refactored function names and included appropriate javadoc comments
* Added javadoc comments
* resolved javadocs conflicts
---------
Co-authored-by: ruthvikm
---
.../controllers/PassiveBuzzerController.java | 97 ++++++
components/src/main/resources/application.yml | 7 +
.../src/docs/javadoc/allclasses-index.html | 54 +--
.../com/opensourcewithslu/Application.html | 12 +-
.../inputdevices/PhotoResistorHelper.html | 7 +-
.../outputdevices/PassiveBuzzerHelper.html | 312 ++++++++++++++++++
.../outputdevices/package-summary.html | 6 +-
.../outputdevices/package-tree.html | 1 +
.../utilities/Pi4JFactory.html | 5 +-
.../utilities/Pi4JMultipinFactory.html | 5 +-
.../src/docs/javadoc/index-all.html | 63 +++-
.../src/docs/javadoc/member-search-index.js | 2 +-
.../src/docs/javadoc/overview-tree.html | 1 +
.../src/docs/javadoc/type-search-index.js | 2 +-
.../com/opensourcewithslu/Application.java | 11 +-
.../inputdevices/PhotoResistorHelper.java | 4 +-
.../outputdevices/PassiveBuzzerHelper.java | 185 +++++++++++
.../utilities/Pi4JFactory.java | 5 +
.../utilities/Pi4JMultipinFactory.java | 6 +
19 files changed, 741 insertions(+), 44 deletions(-)
create mode 100644 components/src/main/java/com/opensourcewithslu/components/controllers/PassiveBuzzerController.java
create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/PassiveBuzzerHelper.html
create mode 100644 pi4micronaut-utils/src/main/java/com/opensourcewithslu/outputdevices/PassiveBuzzerHelper.java
diff --git a/components/src/main/java/com/opensourcewithslu/components/controllers/PassiveBuzzerController.java b/components/src/main/java/com/opensourcewithslu/components/controllers/PassiveBuzzerController.java
new file mode 100644
index 00000000..66ffb612
--- /dev/null
+++ b/components/src/main/java/com/opensourcewithslu/components/controllers/PassiveBuzzerController.java
@@ -0,0 +1,97 @@
+package com.opensourcewithslu.components.controllers;
+
+import com.opensourcewithslu.outputdevices.PassiveBuzzerHelper;
+import com.pi4j.io.pwm.Pwm;
+import io.micronaut.http.annotation.*;
+import jakarta.inject.Named;
+import java.io.File;
+
+@Controller("/passive-buzzer")
+public class PassiveBuzzerController {
+
+ private final PassiveBuzzerHelper passiveBuzzerHelper;
+
+ protected int passBuzzFreq = 440;
+
+ protected int passBuzzDC = 50;
+
+ public PassiveBuzzerController(@Named("passive-buzzer") Pwm passiveBuzzerOutput){
+ this.passiveBuzzerHelper = new PassiveBuzzerHelper(passiveBuzzerOutput);
+ }
+
+ /**
+ * Enables passive buzzer
+ */
+
+ @Get("/enable")
+ public void enablePassiveBuzzer(){
+
+ passiveBuzzerHelper.passiveBuzzerOn(passBuzzDC, passBuzzFreq);
+
+ }
+
+ /**
+ * Disables passive buzzer
+ */
+ @Get("/disable")
+ public void disablePassiveBuzzer(){
+
+ passiveBuzzerHelper.passiveBuzzerOff();
+
+ }
+
+ /**
+ *
+ * Displays the current frequency of the passive buzzer.
+ */
+
+ @Get("/showFreq")
+ public void passiveBuzzerFreq(){
+
+ passiveBuzzerHelper.getFrequency();
+
+ }
+
+ /**
+ *
+ * Takes one file arg, function will allow use to set their own frequencies
+ * to be played by the passive buzzer. In order for the frequencies to be played
+ * the user must do the following:
+ * - Place their frequencies into a text file with the frequencies separated by commas
+ * - use the scp command to copy the file over to the raspberrypi
+ * - (i.e.: scp C:\Users\CompName\filename.txt name@raspberrypiname.local:/home/CompName)
+ * - Once file is copied over to the pi use the curl -X POST command to play the file
+ * - (i.e.: curl -X POST "http://localhost:8080/passive-buzzer/setFreq/filename.txt"
+ */
+
+ @Post("/setFreq/{frequenciesFile}")
+ public void defineFrequency(String frequenciesFile){
+ passiveBuzzerHelper.setFrequencies(new File(frequenciesFile));
+ }
+
+ /**
+ * Validates the functionality of the passive buzzer
+ */
+ @Get("/passBuzz")
+ public void singlePassiveBuzz(){
+ passiveBuzzerHelper.passiveBuzzTone();
+ }
+
+ /**
+ * Ensures that the passive buzzer can cycle through different frequencies
+ */
+ @Get("/freqIter")
+ public void passiveFreqIter(){
+ passiveBuzzerHelper.toneIterator();
+ }
+
+ /**
+ * Calls toneSequence function to play a pre-defined song.
+ */
+ @Get("/playPiSeq")
+ public void playPiTone(){
+
+ passiveBuzzerHelper.piToneSequence();
+
+ }
+}
\ No newline at end of file
diff --git a/components/src/main/resources/application.yml b/components/src/main/resources/application.yml
index bf632e38..1f8f9992 100644
--- a/components/src/main/resources/application.yml
+++ b/components/src/main/resources/application.yml
@@ -41,6 +41,13 @@ pi4j:
provider: pigpio-pwm
initial: 0
shutdown: 0
+ passive-buzzer:
+ name: passive-buzzer
+ address: 17
+ pwmType: SOFTWARE
+ provider: pigpio-pwm
+ initial: 0
+ shutdown: 0
i2c:
# tag::i2c[]
lcd: # <1>
diff --git a/pi4micronaut-utils/src/docs/javadoc/allclasses-index.html b/pi4micronaut-utils/src/docs/javadoc/allclasses-index.html
index eca19578..90788a39 100644
--- a/pi4micronaut-utils/src/docs/javadoc/allclasses-index.html
+++ b/pi4micronaut-utils/src/docs/javadoc/allclasses-index.html
@@ -90,56 +90,60 @@ All Classes and Interfaces<
Class for configuring multipin components.
-
+
-
The PhotoResistorHelper class is used to work with the functionalities of a Photo Resistor.
+
The PassiveBuzzerHelper class contains methods that pertain to the control of the passive buzzer.
-
+
-
The Pi4JFactory class is responsible for creating all the beans for components that are being used.
+
The PhotoResistorHelper class is used to work with the functionalities of a Photo Resistor.
-
+
-
The Pi4JMultipinFactory class is responsible for creating all the beans for all multi pin components that are being used.
+
The Pi4JFactory class is responsible for creating all the beans for components that are being used.
-
+
-
The PIRSensorHelper class is used to initialize a PIR motion sensor.
+
The Pi4JMultipinFactory class is responsible for creating all the beans for all multi pin components that are being used.
-
+
-
The PushButtonHelper class is used to create a listener that determines when a 4 pin button is pressed.
+
The PIRSensorHelper class is used to initialize a PIR motion sensor.
-
+
-
The PwmConfiguration class handles the configuration of a pwm component.
+
The PushButtonHelper class is used to create a listener that determines when a 4 pin button is pressed.
-
+
-
This class handles the configuration of a PWM device that has multiple pins.
+
The PwmConfiguration class handles the configuration of a pwm component.
-
+
-
The RFIDHelper class is for interacting with an RFID scanner.
+
This class handles the configuration of a PWM device that has multiple pins.
-
+
-
The RBGLEDHelper class handles all interactions with a RGB LED.
+
The RFIDHelper class is for interacting with an RFID scanner.
-
+
-
The RotaryEncoderHelper class initializes a rotary encoder component and returns the value of the encoder when called upon.
+
The RBGLEDHelper class handles all interactions with a RGB LED.
-
+
-
The SlideSwitchHelper class is used to initialize a slide switch.
+
The RotaryEncoderHelper class initializes a rotary encoder component and returns the value of the encoder when called upon.
-
+
-
This class handles the configuration of a SPI component.
+
The SlideSwitchHelper class is used to initialize a slide switch.
-
+
+
This class handles the configuration of a SPI component.
+
+
+
The TouchSwitchHelper class is used to initialize a touch switch.
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/Application.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/Application.html
index 16cdbae7..37da906f 100644
--- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/Application.html
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/Application.html
@@ -104,7 +104,9 @@ Constructor Summary
-
+
+
This is the default constructor for the Application class.
+
@@ -122,7 +124,7 @@ Method Summary
static void
-
constructor
+
The main entry point of the application.
@@ -145,6 +147,8 @@ Constructor Details
Application
public Application ()
+This is the default constructor for the Application class.
+ It initializes the application with default settings.
@@ -159,10 +163,10 @@ Method Details
main
public static void main (String [] args)
-constructor
+The main entry point of the application.
Parameters:
-args
- None
+args
- The command-line arguments passed to the application.
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PhotoResistorHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PhotoResistorHelper.html
index 3d060ba4..39f30805 100644
--- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PhotoResistorHelper.html
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PhotoResistorHelper.html
@@ -146,7 +146,9 @@ Method Summary
int
-
+
+
Returns the current value of the darknessValue variable.
+
void
@@ -229,9 +231,10 @@
Method Details
getDark
public int getDark ()
+Returns the current value of the darknessValue variable.
Returns:
-current darknessValue.
+The current value of darknessValue.
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/PassiveBuzzerHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/PassiveBuzzerHelper.html
new file mode 100644
index 00000000..df3166eb
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/PassiveBuzzerHelper.html
@@ -0,0 +1,312 @@
+
+
+
+
+
PassiveBuzzerHelper (pi4micronaut-utils v1.0 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class PassiveBuzzerHelper
+
extends Object
+The PassiveBuzzerHelper class contains methods that pertain to the control of the passive buzzer.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
protected int
+
+
+
passBuzzDC is a protected integer variable that defines the duty cycle.
+
+
protected int
+
+
+
passiveBuzzerFreq is a protected integer variable that defines the default frequency for the buzzer.
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
The PassiveBuzzerHelper constructor.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
Logs the passiveBuzzerFreq to the console
+
+
void
+
+
+
Disables the passive buzzer.
+
+
void
+
+
+
Sets the passive buzzer to the desired duty cycle and frequency.
+
+
void
+
+
+
passiveBuzzTone emits a 1 - second buzz to ensure functionality
+
+
void
+
+
+
Tone sequence cycles through array's containing the frequencies of the first
+ then digits of pi.
+
+
void
+
+
+
Allows users to pipe in a text file of frequencies separated by commas to play on the passive buzzer.
+
+
void
+
+
+
freChangeTest cycles through frequencies to verify that frequencies are changing
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+passiveBuzzerFreq
+protected int passiveBuzzerFreq
+passiveBuzzerFreq is a protected integer variable that defines the default frequency for the buzzer.
+
+
+
+
+passBuzzDC
+protected int passBuzzDC
+passBuzzDC is a protected integer variable that defines the duty cycle. When set at 50% the buzzer is in a half
+ on and half off state.
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+PassiveBuzzerHelper
+public PassiveBuzzerHelper (com.pi4j.io.pwm.Pwm passiveBuzzer)
+The PassiveBuzzerHelper constructor.
+
+Parameters:
+passiveBuzzer
- A PwmConfiguration
Object.
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+passiveBuzzerOn
+public void passiveBuzzerOn (int passBuzzDC,
+ int passiveBuzzerFreq)
+Sets the passive buzzer to the desired duty cycle and frequency.
+
+Parameters:
+passBuzzDC
- sets the passive buzzer to the desired duty cycle.
+passiveBuzzerFreq
- sets the passive buzzer to the desired frequency.
+
+
+
+
+
+passiveBuzzerOff
+public void passiveBuzzerOff ()
+Disables the passive buzzer. Effectively silencing it.
+
+
+
+
+getFrequency
+public void getFrequency ()
+Logs the passiveBuzzerFreq to the console
+
+
+
+
+setFrequencies
+public void setFrequencies (File frequenciesFile)
+Allows users to pipe in a text file of frequencies separated by commas to play on the passive buzzer.
+
+Parameters:
+frequenciesFile
- The file containing the frequencies to be played
+
+
+
+
+
+passiveBuzzTone
+public void passiveBuzzTone ()
+passiveBuzzTone emits a 1 - second buzz to ensure functionality
+
+
+
+
+toneIterator
+public void toneIterator ()
+freChangeTest cycles through frequencies to verify that frequencies are changing
+
+
+
+
+piToneSequence
+public void piToneSequence ()
+Tone sequence cycles through array's containing the frequencies of the first
+ then digits of pi.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-summary.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-summary.html
index 6c2094e5..cddbe7d9 100644
--- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-summary.html
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-summary.html
@@ -103,8 +103,12 @@
Package co
The class LEDHelper contains methods that pertain to the control of a LED.
-
+
+
The PassiveBuzzerHelper class contains methods that pertain to the control of the passive buzzer.
+
+
+
The RBGLEDHelper class handles all interactions with a RGB LED.
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-tree.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-tree.html
index ad80d8aa..581b511b 100644
--- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-tree.html
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-tree.html
@@ -61,6 +61,7 @@
Class Hierarchy
com.opensourcewithslu.outputdevices.ActiveBuzzerHelper
com.opensourcewithslu.outputdevices.LCD1602Helper
com.opensourcewithslu.outputdevices.LEDHelper
+
com.opensourcewithslu.outputdevices.PassiveBuzzerHelper
com.opensourcewithslu.outputdevices.RGBLEDHelper
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JFactory.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JFactory.html
index 58f64459..dfa8fcdd 100644
--- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JFactory.html
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JFactory.html
@@ -105,7 +105,9 @@
Constructor Summary
-
+
+
Default constructor for Pi4JFactory.
+
@@ -176,6 +178,7 @@ Constructor Details
Pi4JFactory
public Pi4JFactory ()
+Default constructor for Pi4JFactory.
diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JMultipinFactory.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JMultipinFactory.html
index a6b89ecf..0a4a5427 100644
--- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JMultipinFactory.html
+++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JMultipinFactory.html
@@ -106,7 +106,9 @@ Constructor Summary
-
+
+
Default constructor for Pi4JMultipinFactory.
+
@@ -154,6 +156,7 @@ Constructor Details
Pi4JMultipinFactory
public Pi4JMultipinFactory ()
+Default constructor for Pi4JMultipinFactory.
diff --git a/pi4micronaut-utils/src/docs/javadoc/index-all.html b/pi4micronaut-utils/src/docs/javadoc/index-all.html
index bdbe5ade..a1ce12df 100644
--- a/pi4micronaut-utils/src/docs/javadoc/index-all.html
+++ b/pi4micronaut-utils/src/docs/javadoc/index-all.html
@@ -97,7 +97,9 @@ A
Runs the Micronaut framework in the Pi4Micronaut framework.
Application() - Constructor for class com.opensourcewithslu.Application
-
+
+This is the default constructor for the Application class.
+
B
@@ -217,7 +219,9 @@ G
Gets the components that are part of the overall component.
getDark() - Method in class com.opensourcewithslu.inputdevices.PhotoResistorHelper
-
+
+Returns the current value of the darknessValue variable.
+
getDebounce() - Method in class com.opensourcewithslu.utilities.DigitalInputConfiguration
Gets the current debounce value for the component.
@@ -234,6 +238,10 @@ G
Gets the value of the rotary encoder.
+ getFrequency() - Method in class com.opensourcewithslu.outputdevices.PassiveBuzzerHelper
+
+Logs the passiveBuzzerFreq to the console
+
getId() - Method in class com.opensourcewithslu.utilities.DigitalInputConfiguration
Gets the id of the component.
@@ -457,7 +465,7 @@ M
main(String[]) - Static method in class com.opensourcewithslu.Application
-constructor
+The main entry point of the application.
morseCodeTone() - Method in class com.opensourcewithslu.outputdevices.ActiveBuzzerHelper
@@ -482,6 +490,34 @@ M
P
+passBuzzDC - Variable in class com.opensourcewithslu.outputdevices.PassiveBuzzerHelper
+
+passBuzzDC is a protected integer variable that defines the duty cycle.
+
+passiveBuzzerFreq - Variable in class com.opensourcewithslu.outputdevices.PassiveBuzzerHelper
+
+passiveBuzzerFreq is a protected integer variable that defines the default frequency for the buzzer.
+
+PassiveBuzzerHelper - Class in com.opensourcewithslu.outputdevices
+
+The PassiveBuzzerHelper class contains methods that pertain to the control of the passive buzzer.
+
+PassiveBuzzerHelper(Pwm) - Constructor for class com.opensourcewithslu.outputdevices.PassiveBuzzerHelper
+
+The PassiveBuzzerHelper constructor.
+
+passiveBuzzerOff() - Method in class com.opensourcewithslu.outputdevices.PassiveBuzzerHelper
+
+Disables the passive buzzer.
+
+passiveBuzzerOn(int, int) - Method in class com.opensourcewithslu.outputdevices.PassiveBuzzerHelper
+
+Sets the passive buzzer to the desired duty cycle and frequency.
+
+passiveBuzzTone() - Method in class com.opensourcewithslu.outputdevices.PassiveBuzzerHelper
+
+passiveBuzzTone emits a 1 - second buzz to ensure functionality
+
PhotoResistorHelper - Class in com.opensourcewithslu.inputdevices
The PhotoResistorHelper class is used to work with the functionalities of a Photo Resistor.
@@ -495,13 +531,17 @@ P
The Pi4JFactory class is responsible for creating all the beans for components that are being used.
Pi4JFactory() - Constructor for class com.opensourcewithslu.utilities.Pi4JFactory
-
+
+Default constructor for Pi4JFactory.
+
Pi4JMultipinFactory - Class in com.opensourcewithslu.utilities
The Pi4JMultipinFactory class is responsible for creating all the beans for all multi pin components that are being used.
Pi4JMultipinFactory() - Constructor for class com.opensourcewithslu.utilities.Pi4JMultipinFactory
-
+
+Default constructor for Pi4JMultipinFactory.
+
PIRSensorHelper - Class in com.opensourcewithslu.inputdevices
The PIRSensorHelper class is used to initialize a PIR motion sensor.
@@ -510,6 +550,11 @@ P
PIRSensorHelper constructor
+ piToneSequence() - Method in class com.opensourcewithslu.outputdevices.PassiveBuzzerHelper
+
+Tone sequence cycles through array's containing the frequencies of the first
+ then digits of pi.
+
PushButtonHelper - Class in com.opensourcewithslu.inputdevices
The PushButtonHelper class is used to create a listener that determines when a 4 pin button is pressed.
@@ -672,6 +717,10 @@ S
Sets the device
+ setFrequencies(File) - Method in class com.opensourcewithslu.outputdevices.PassiveBuzzerHelper
+
+Allows users to pipe in a text file of frequencies separated by commas to play on the passive buzzer.
+
setGreen(int) - Method in class com.opensourcewithslu.outputdevices.RGBLEDHelper
Sets the green value of the LED.
@@ -807,6 +856,10 @@ S
T
+toneIterator() - Method in class com.opensourcewithslu.outputdevices.PassiveBuzzerHelper
+
+freChangeTest cycles through frequencies to verify that frequencies are changing
+
TouchSwitchHelper - Class in com.opensourcewithslu.inputdevices
The TouchSwitchHelper class is used to initialize a touch switch.
diff --git a/pi4micronaut-utils/src/docs/javadoc/member-search-index.js b/pi4micronaut-utils/src/docs/javadoc/member-search-index.js
index e278f622..fc04e58d 100644
--- a/pi4micronaut-utils/src/docs/javadoc/member-search-index.js
+++ b/pi4micronaut-utils/src/docs/javadoc/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"actBuzzCheck"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"ActiveBuzzerHelper(Pwm)","u":"%3Cinit%3E(com.pi4j.io.pwm.Pwm)"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"activeBuzzerOff()"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"activeBuzzerOn()"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu","c":"Application","l":"Application()","u":"%3Cinit%3E()"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"beep()"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"clearDisplay()"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"clearLine(int)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createDigitalInput(DigitalInputConfiguration, Context)","u":"createDigitalInput(com.opensourcewithslu.utilities.DigitalInputConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createDigitalOutput(DigitalOutputConfiguration, Context)","u":"createDigitalOutput(com.opensourcewithslu.utilities.DigitalOutputConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createI2C(i2cConfiguration, Context)","u":"createI2C(com.opensourcewithslu.utilities.i2cConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createPi4jContext()"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createPwm(PwmConfiguration, Context)","u":"createPwm(com.opensourcewithslu.utilities.PwmConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createSpi(SpiConfiguration, Context)","u":"createSpi(com.opensourcewithslu.utilities.SpiConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"DigitalInputConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"DigitalInputMultiPinConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"DigitalOutputConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getAddress()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getAddress()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getAddress()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getAddresses()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getAddresses()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getBaud()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"getBus()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getChannel()"},{"p":"com.opensourcewithslu.utilities","c":"MultipinConfiguration","l":"getComponents()"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"getDark()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getDebounce()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getDebounces()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"getDevice()"},{"p":"com.opensourcewithslu.inputdevices","c":"RotaryEncoderHelper","l":"getEncoderValue()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"MultipinConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getInital()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getInitals()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getInitial()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getMode()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getPull()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getPulls()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getPwmType()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getPwmTypes()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getShutdown()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getShutdown()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getShutdowns()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"i2cConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"RotaryEncoderHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"initialize()"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"intermittentTone()"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"isDark"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"isMoving"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"isOn"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"isPressed"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"isTouched"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"LCD1602Helper(I2CConfig, Context)","u":"%3Cinit%3E(com.pi4j.io.i2c.I2CConfig,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.outputdevices","c":"LEDHelper","l":"LEDHelper(DigitalOutput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalOutput)"},{"p":"com.opensourcewithslu.outputdevices","c":"LEDHelper","l":"ledOff()"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"ledOff()"},{"p":"com.opensourcewithslu.outputdevices","c":"LEDHelper","l":"ledOn()"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"ledOn()"},{"p":"com.opensourcewithslu","c":"Application","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"morseCodeTone()"},{"p":"com.opensourcewithslu.utilities","c":"MultipinConfiguration","l":"MultipinConfiguration(String, Object[])","u":"%3Cinit%3E(java.lang.String,java.lang.Object[])"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JMultipinFactory","l":"multiPinInput(DigitalInputMultiPinConfiguration, Context)","u":"multiPinInput(com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JMultipinFactory","l":"multiPinPwm(PwmMultiPinConfiguration, Context)","u":"multiPinPwm(com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"PhotoResistorHelper(DigitalInput, DigitalOutput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput,com.pi4j.io.gpio.digital.DigitalOutput)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"Pi4JFactory()","u":"%3Cinit%3E()"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JMultipinFactory","l":"Pi4JMultipinFactory()","u":"%3Cinit%3E()"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"PIRSensorHelper(DigitalInput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput)"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"PushButtonHelper(DigitalInput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"PwmConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"PwmMultiPinConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"readFromCard()"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"removeEventListener()"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"removeEventListener()"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"removeEventListener()"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"removeEventListener(DigitalStateChangeListener)","u":"removeEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"removeEventListener(DigitalStateChangeListener)","u":"removeEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"resetScanner()"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"RFidHelper(SpiConfig, Context)","u":"%3Cinit%3E(com.pi4j.io.spi.SpiConfig,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"RFidHelper(SpiConfig, int, Context)","u":"%3Cinit%3E(com.pi4j.io.spi.SpiConfig,int,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"RGBLEDHelper(MultipinConfiguration)","u":"%3Cinit%3E(com.opensourcewithslu.utilities.MultipinConfiguration)"},{"p":"com.opensourcewithslu.inputdevices","c":"RotaryEncoderHelper","l":"RotaryEncoderHelper(MultipinConfiguration)","u":"%3Cinit%3E(com.opensourcewithslu.utilities.MultipinConfiguration)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setAddress(int)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setAddress(int)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setAddress(int)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setAddresses(String)","u":"setAddresses(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setAddresses(String)","u":"setAddresses(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"setBackLight(boolean)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"setBaud(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setBlue(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setBlue(int, int)","u":"setBlue(int,int)"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"setBus(int)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"setChannel(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setColor(int[])"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setColor(int[], int[])","u":"setColor(int[],int[])"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setColorHex(String)","u":"setColorHex(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setColorHex(String, int[])","u":"setColorHex(java.lang.String,int[])"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"setDarknessThreshold(int)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setDebounce(Long)","u":"setDebounce(java.lang.Long)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setDebounces(String)","u":"setDebounces(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"setDevice(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setGreen(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setGreen(int, int)","u":"setGreen(int,int)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setInital(int)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setInitial(DigitalState)","u":"setInitial(com.pi4j.io.gpio.digital.DigitalState)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setInitials(String)","u":"setInitials(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"setMode(SpiMode)","u":"setMode(com.pi4j.io.spi.SpiMode)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setPull(PullResistance)","u":"setPull(com.pi4j.io.gpio.digital.PullResistance)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setPulls(String)","u":"setPulls(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setPwmType(String)","u":"setPwmType(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setPwmTypes(String)","u":"setPwmTypes(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setRed(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setRed(int, int)","u":"setRed(int,int)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setShutdown(DigitalState)","u":"setShutdown(com.pi4j.io.gpio.digital.DigitalState)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setShutdown(int)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setShutdowns(String)","u":"setShutdowns(java.lang.String)"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"setToLow()"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"SlideSwitchHelper(DigitalInput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"SpiConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"LEDHelper","l":"switchState()"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"TouchSwitchHelper(DigitalInput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput)"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"updateDark()"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"writeText(String)","u":"writeText(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"writeTextAtLine(String, int)","u":"writeTextAtLine(java.lang.String,int)"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"writeToCard(Object)","u":"writeToCard(java.lang.Object)"}];updateSearchResults();
\ No newline at end of file
+memberSearchIndex = [{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"actBuzzCheck"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"ActiveBuzzerHelper(Pwm)","u":"%3Cinit%3E(com.pi4j.io.pwm.Pwm)"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"activeBuzzerOff()"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"activeBuzzerOn()"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"addEventListener(DigitalStateChangeListener)","u":"addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu","c":"Application","l":"Application()","u":"%3Cinit%3E()"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"beep()"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"clearDisplay()"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"clearLine(int)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createDigitalInput(DigitalInputConfiguration, Context)","u":"createDigitalInput(com.opensourcewithslu.utilities.DigitalInputConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createDigitalOutput(DigitalOutputConfiguration, Context)","u":"createDigitalOutput(com.opensourcewithslu.utilities.DigitalOutputConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createI2C(i2cConfiguration, Context)","u":"createI2C(com.opensourcewithslu.utilities.i2cConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createPi4jContext()"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createPwm(PwmConfiguration, Context)","u":"createPwm(com.opensourcewithslu.utilities.PwmConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"createSpi(SpiConfiguration, Context)","u":"createSpi(com.opensourcewithslu.utilities.SpiConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"DigitalInputConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"DigitalInputMultiPinConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"DigitalOutputConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getAddress()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getAddress()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getAddress()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getAddresses()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getAddresses()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getBaud()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"getBus()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getChannel()"},{"p":"com.opensourcewithslu.utilities","c":"MultipinConfiguration","l":"getComponents()"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"getDark()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getDebounce()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getDebounces()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"getDevice()"},{"p":"com.opensourcewithslu.inputdevices","c":"RotaryEncoderHelper","l":"getEncoderValue()"},{"p":"com.opensourcewithslu.outputdevices","c":"PassiveBuzzerHelper","l":"getFrequency()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"MultipinConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getId()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getInital()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getInitals()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getInitial()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getMode()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"getName()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getProvider()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"getPull()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"getPulls()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getPwmType()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getPwmTypes()"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"getShutdown()"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"getShutdown()"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"getShutdowns()"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"i2cConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"RotaryEncoderHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"initialize()"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"initialize()"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"intermittentTone()"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"isDark"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"isMoving"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"isOn"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"isPressed"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"isTouched"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"LCD1602Helper(I2CConfig, Context)","u":"%3Cinit%3E(com.pi4j.io.i2c.I2CConfig,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.outputdevices","c":"LEDHelper","l":"LEDHelper(DigitalOutput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalOutput)"},{"p":"com.opensourcewithslu.outputdevices","c":"LEDHelper","l":"ledOff()"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"ledOff()"},{"p":"com.opensourcewithslu.outputdevices","c":"LEDHelper","l":"ledOn()"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"ledOn()"},{"p":"com.opensourcewithslu","c":"Application","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"com.opensourcewithslu.outputdevices","c":"ActiveBuzzerHelper","l":"morseCodeTone()"},{"p":"com.opensourcewithslu.utilities","c":"MultipinConfiguration","l":"MultipinConfiguration(String, Object[])","u":"%3Cinit%3E(java.lang.String,java.lang.Object[])"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JMultipinFactory","l":"multiPinInput(DigitalInputMultiPinConfiguration, Context)","u":"multiPinInput(com.opensourcewithslu.utilities.MultiPinConfigs.DigitalInputMultiPinConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JMultipinFactory","l":"multiPinPwm(PwmMultiPinConfiguration, Context)","u":"multiPinPwm(com.opensourcewithslu.utilities.MultiPinConfigs.PwmMultiPinConfiguration,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.outputdevices","c":"PassiveBuzzerHelper","l":"passBuzzDC"},{"p":"com.opensourcewithslu.outputdevices","c":"PassiveBuzzerHelper","l":"passiveBuzzerFreq"},{"p":"com.opensourcewithslu.outputdevices","c":"PassiveBuzzerHelper","l":"PassiveBuzzerHelper(Pwm)","u":"%3Cinit%3E(com.pi4j.io.pwm.Pwm)"},{"p":"com.opensourcewithslu.outputdevices","c":"PassiveBuzzerHelper","l":"passiveBuzzerOff()"},{"p":"com.opensourcewithslu.outputdevices","c":"PassiveBuzzerHelper","l":"passiveBuzzerOn(int, int)","u":"passiveBuzzerOn(int,int)"},{"p":"com.opensourcewithslu.outputdevices","c":"PassiveBuzzerHelper","l":"passiveBuzzTone()"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"PhotoResistorHelper(DigitalInput, DigitalOutput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput,com.pi4j.io.gpio.digital.DigitalOutput)"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JFactory","l":"Pi4JFactory()","u":"%3Cinit%3E()"},{"p":"com.opensourcewithslu.utilities","c":"Pi4JMultipinFactory","l":"Pi4JMultipinFactory()","u":"%3Cinit%3E()"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"PIRSensorHelper(DigitalInput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput)"},{"p":"com.opensourcewithslu.outputdevices","c":"PassiveBuzzerHelper","l":"piToneSequence()"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"PushButtonHelper(DigitalInput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"PwmConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"PwmMultiPinConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"readFromCard()"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"removeEventListener()"},{"p":"com.opensourcewithslu.inputdevices","c":"PIRSensorHelper","l":"removeEventListener()"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"removeEventListener()"},{"p":"com.opensourcewithslu.inputdevices","c":"PushButtonHelper","l":"removeEventListener(DigitalStateChangeListener)","u":"removeEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"removeEventListener(DigitalStateChangeListener)","u":"removeEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener)"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"resetScanner()"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"RFidHelper(SpiConfig, Context)","u":"%3Cinit%3E(com.pi4j.io.spi.SpiConfig,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"RFidHelper(SpiConfig, int, Context)","u":"%3Cinit%3E(com.pi4j.io.spi.SpiConfig,int,com.pi4j.context.Context)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"RGBLEDHelper(MultipinConfiguration)","u":"%3Cinit%3E(com.opensourcewithslu.utilities.MultipinConfiguration)"},{"p":"com.opensourcewithslu.inputdevices","c":"RotaryEncoderHelper","l":"RotaryEncoderHelper(MultipinConfiguration)","u":"%3Cinit%3E(com.opensourcewithslu.utilities.MultipinConfiguration)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setAddress(int)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setAddress(int)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setAddress(int)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setAddresses(String)","u":"setAddresses(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setAddresses(String)","u":"setAddresses(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"setBackLight(boolean)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"setBaud(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setBlue(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setBlue(int, int)","u":"setBlue(int,int)"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"setBus(int)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"setChannel(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setColor(int[])"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setColor(int[], int[])","u":"setColor(int[],int[])"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setColorHex(String)","u":"setColorHex(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setColorHex(String, int[])","u":"setColorHex(java.lang.String,int[])"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"setDarknessThreshold(int)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setDebounce(Long)","u":"setDebounce(java.lang.Long)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setDebounces(String)","u":"setDebounces(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"setDevice(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"PassiveBuzzerHelper","l":"setFrequencies(File)","u":"setFrequencies(java.io.File)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setGreen(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setGreen(int, int)","u":"setGreen(int,int)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setInital(int)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setInitial(DigitalState)","u":"setInitial(com.pi4j.io.gpio.digital.DigitalState)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setInitials(String)","u":"setInitials(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"setMode(SpiMode)","u":"setMode(com.pi4j.io.spi.SpiMode)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"i2cConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"setName(String)","u":"setName(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setProvider(String)","u":"setProvider(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalInputConfiguration","l":"setPull(PullResistance)","u":"setPull(com.pi4j.io.gpio.digital.PullResistance)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"DigitalInputMultiPinConfiguration","l":"setPulls(String)","u":"setPulls(java.lang.String)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setPwmType(String)","u":"setPwmType(java.lang.String)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setPwmTypes(String)","u":"setPwmTypes(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setRed(int)"},{"p":"com.opensourcewithslu.outputdevices","c":"RGBLEDHelper","l":"setRed(int, int)","u":"setRed(int,int)"},{"p":"com.opensourcewithslu.utilities","c":"DigitalOutputConfiguration","l":"setShutdown(DigitalState)","u":"setShutdown(com.pi4j.io.gpio.digital.DigitalState)"},{"p":"com.opensourcewithslu.utilities","c":"PwmConfiguration","l":"setShutdown(int)"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","c":"PwmMultiPinConfiguration","l":"setShutdowns(String)","u":"setShutdowns(java.lang.String)"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"setToLow()"},{"p":"com.opensourcewithslu.inputdevices","c":"SlideSwitchHelper","l":"SlideSwitchHelper(DigitalInput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput)"},{"p":"com.opensourcewithslu.utilities","c":"SpiConfiguration","l":"SpiConfiguration(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"LEDHelper","l":"switchState()"},{"p":"com.opensourcewithslu.outputdevices","c":"PassiveBuzzerHelper","l":"toneIterator()"},{"p":"com.opensourcewithslu.inputdevices","c":"TouchSwitchHelper","l":"TouchSwitchHelper(DigitalInput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalInput)"},{"p":"com.opensourcewithslu.inputdevices","c":"PhotoResistorHelper","l":"updateDark()"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"writeText(String)","u":"writeText(java.lang.String)"},{"p":"com.opensourcewithslu.outputdevices","c":"LCD1602Helper","l":"writeTextAtLine(String, int)","u":"writeTextAtLine(java.lang.String,int)"},{"p":"com.opensourcewithslu.inputdevices","c":"RFidHelper","l":"writeToCard(Object)","u":"writeToCard(java.lang.Object)"}];updateSearchResults();
\ No newline at end of file
diff --git a/pi4micronaut-utils/src/docs/javadoc/overview-tree.html b/pi4micronaut-utils/src/docs/javadoc/overview-tree.html
index 123c143c..ea2c936c 100644
--- a/pi4micronaut-utils/src/docs/javadoc/overview-tree.html
+++ b/pi4micronaut-utils/src/docs/javadoc/overview-tree.html
@@ -71,6 +71,7 @@ Class Hierarchy
com.opensourcewithslu.outputdevices.LCD1602Helper
com.opensourcewithslu.outputdevices.LEDHelper
com.opensourcewithslu.utilities.MultipinConfiguration
+com.opensourcewithslu.outputdevices.PassiveBuzzerHelper
com.opensourcewithslu.inputdevices.PhotoResistorHelper
com.opensourcewithslu.utilities.Pi4JFactory
com.opensourcewithslu.utilities.Pi4JMultipinFactory
diff --git a/pi4micronaut-utils/src/docs/javadoc/type-search-index.js b/pi4micronaut-utils/src/docs/javadoc/type-search-index.js
index 1f7ac61c..b2436e8d 100644
--- a/pi4micronaut-utils/src/docs/javadoc/type-search-index.js
+++ b/pi4micronaut-utils/src/docs/javadoc/type-search-index.js
@@ -1 +1 @@
-typeSearchIndex = [{"p":"com.opensourcewithslu.outputdevices","l":"ActiveBuzzerHelper"},{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"com.opensourcewithslu","l":"Application"},{"p":"com.opensourcewithslu.utilities","l":"DigitalInputConfiguration"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","l":"DigitalInputMultiPinConfiguration"},{"p":"com.opensourcewithslu.utilities","l":"DigitalOutputConfiguration"},{"p":"com.opensourcewithslu.utilities","l":"i2cConfiguration"},{"p":"com.opensourcewithslu.outputdevices","l":"LCD1602Helper"},{"p":"com.opensourcewithslu.outputdevices","l":"LEDHelper"},{"p":"com.opensourcewithslu.utilities","l":"MultipinConfiguration"},{"p":"com.opensourcewithslu.inputdevices","l":"PhotoResistorHelper"},{"p":"com.opensourcewithslu.utilities","l":"Pi4JFactory"},{"p":"com.opensourcewithslu.utilities","l":"Pi4JMultipinFactory"},{"p":"com.opensourcewithslu.inputdevices","l":"PIRSensorHelper"},{"p":"com.opensourcewithslu.inputdevices","l":"PushButtonHelper"},{"p":"com.opensourcewithslu.utilities","l":"PwmConfiguration"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","l":"PwmMultiPinConfiguration"},{"p":"com.opensourcewithslu.inputdevices","l":"RFidHelper"},{"p":"com.opensourcewithslu.outputdevices","l":"RGBLEDHelper"},{"p":"com.opensourcewithslu.inputdevices","l":"RotaryEncoderHelper"},{"p":"com.opensourcewithslu.inputdevices","l":"SlideSwitchHelper"},{"p":"com.opensourcewithslu.utilities","l":"SpiConfiguration"},{"p":"com.opensourcewithslu.inputdevices","l":"TouchSwitchHelper"}];updateSearchResults();
\ No newline at end of file
+typeSearchIndex = [{"p":"com.opensourcewithslu.outputdevices","l":"ActiveBuzzerHelper"},{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"com.opensourcewithslu","l":"Application"},{"p":"com.opensourcewithslu.utilities","l":"DigitalInputConfiguration"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","l":"DigitalInputMultiPinConfiguration"},{"p":"com.opensourcewithslu.utilities","l":"DigitalOutputConfiguration"},{"p":"com.opensourcewithslu.utilities","l":"i2cConfiguration"},{"p":"com.opensourcewithslu.outputdevices","l":"LCD1602Helper"},{"p":"com.opensourcewithslu.outputdevices","l":"LEDHelper"},{"p":"com.opensourcewithslu.utilities","l":"MultipinConfiguration"},{"p":"com.opensourcewithslu.outputdevices","l":"PassiveBuzzerHelper"},{"p":"com.opensourcewithslu.inputdevices","l":"PhotoResistorHelper"},{"p":"com.opensourcewithslu.utilities","l":"Pi4JFactory"},{"p":"com.opensourcewithslu.utilities","l":"Pi4JMultipinFactory"},{"p":"com.opensourcewithslu.inputdevices","l":"PIRSensorHelper"},{"p":"com.opensourcewithslu.inputdevices","l":"PushButtonHelper"},{"p":"com.opensourcewithslu.utilities","l":"PwmConfiguration"},{"p":"com.opensourcewithslu.utilities.MultiPinConfigs","l":"PwmMultiPinConfiguration"},{"p":"com.opensourcewithslu.inputdevices","l":"RFidHelper"},{"p":"com.opensourcewithslu.outputdevices","l":"RGBLEDHelper"},{"p":"com.opensourcewithslu.inputdevices","l":"RotaryEncoderHelper"},{"p":"com.opensourcewithslu.inputdevices","l":"SlideSwitchHelper"},{"p":"com.opensourcewithslu.utilities","l":"SpiConfiguration"},{"p":"com.opensourcewithslu.inputdevices","l":"TouchSwitchHelper"}];updateSearchResults();
\ No newline at end of file
diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/Application.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/Application.java
index 55ee4996..11fdc8ac 100644
--- a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/Application.java
+++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/Application.java
@@ -7,8 +7,15 @@
*/
public class Application {
/**
- * constructor
- * @param args None
+ * This is the default constructor for the Application class.
+ * It initializes the application with default settings.
+ */
+ public Application() { }
+
+ /**
+ * The main entry point of the application.
+ *
+ * @param args The command-line arguments passed to the application.
*/
public static void main(String[] args) {
Micronaut.run(Application.class, args);
diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/PhotoResistorHelper.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/PhotoResistorHelper.java
index 48e63e8d..c9069487 100644
--- a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/PhotoResistorHelper.java
+++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/PhotoResistorHelper.java
@@ -43,7 +43,9 @@ public PhotoResistorHelper(DigitalInput sensorInput, DigitalOutput sensorOutput)
this.isDark = photoResistorInput.isHigh();
}
/**
- * @return current darknessValue.
+ * Returns the current value of the darknessValue variable.
+ *
+ * @return The current value of darknessValue.
*/
public int getDark() {
return darknessValue;
diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/outputdevices/PassiveBuzzerHelper.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/outputdevices/PassiveBuzzerHelper.java
new file mode 100644
index 00000000..ac669ea3
--- /dev/null
+++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/outputdevices/PassiveBuzzerHelper.java
@@ -0,0 +1,185 @@
+package com.opensourcewithslu.outputdevices;
+
+import com.pi4j.io.pwm.Pwm;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.util.Scanner;
+import java.io.FileNotFoundException;
+
+/**
+ * The PassiveBuzzerHelper class contains methods that pertain to the control of the passive buzzer.
+ */
+public class PassiveBuzzerHelper {
+
+ private static final Logger log = LoggerFactory.getLogger(PassiveBuzzerHelper.class);
+
+ private final Pwm passiveBuzzer;
+ /**
+ * passiveBuzzerFreq is a protected integer variable that defines the default frequency for the buzzer.
+ */
+ protected int passiveBuzzerFreq = 440;
+
+ /**
+ * passBuzzDC is a protected integer variable that defines the duty cycle. When set at 50% the buzzer is in a half
+ * on and half off state.
+ */
+ protected int passBuzzDC = 50;
+ /**
+ * The PassiveBuzzerHelper constructor.
+ * @param passiveBuzzer A {@link com.opensourcewithslu.utilities.PwmConfiguration} Object.
+ */
+ public PassiveBuzzerHelper( Pwm passiveBuzzer){
+
+ this.passiveBuzzer = passiveBuzzer;
+
+ }
+
+ /**
+ * Sets the passive buzzer to the desired duty cycle and frequency.
+ * @param passBuzzDC sets the passive buzzer to the desired duty cycle.
+ * @param passiveBuzzerFreq sets the passive buzzer to the desired frequency.
+ */
+ //tag::method[]
+ public void passiveBuzzerOn(int passBuzzDC, int passiveBuzzerFreq){
+ //end::method[]
+ log.info("Initializing passive buzzer.");
+
+ this.passiveBuzzer.on(passBuzzDC, passiveBuzzerFreq);
+ }
+
+ /**
+ * Disables the passive buzzer. Effectively silencing it.
+ */
+ //tag::method[]
+ public void passiveBuzzerOff(){
+ //end::method[]
+
+ log.info("Powering passive buzzer off.");
+
+ this.passiveBuzzer.off();
+ }
+
+ /**
+ *
+ * Logs the passiveBuzzerFreq to the console
+ */
+
+ //tag::method[]
+ public void getFrequency(){
+ //end::method[]
+
+ log.info(String.valueOf(passiveBuzzerFreq));
+
+ }
+
+ /**
+ * Allows users to pipe in a text file of frequencies separated by commas to play on the passive buzzer.
+ *
+ * @param frequenciesFile The file containing the frequencies to be played
+ */
+ //tag::method[]
+ public void setFrequencies(File frequenciesFile){
+ //end::method[]
+
+ int duration = 1000; //Pre-defined duration length of 1-sec
+ try {
+ Scanner scanner = new Scanner(frequenciesFile);
+
+ String frequenciesStr = scanner.nextLine();
+ String[] frequenciesArr = frequenciesStr.split(",");
+ int[] frequencies = new int[frequenciesArr.length];
+
+ for (int i = 0; i < frequenciesArr.length; i++) {
+ frequencies[i] = Integer.parseInt(frequenciesArr[i].trim());
+ }
+
+ scanner.close();
+
+ for (int frequency : frequencies) {
+ if (frequency >= 20 && frequency <= 20000) {
+ log.info("Setting frequency to " + frequency + " Hz.");
+ passiveBuzzerOn(passBuzzDC, frequency);
+ try {
+ Thread.sleep(duration); // Play each frequency for the specified duration
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ passiveBuzzerOff();
+ } else {
+ log.error("Frequency is out of range. Please choose a value between 20 Hz and 20 kHz.");
+ }
+ }
+ } catch (FileNotFoundException e) {
+ log.error("Frequencies file not found: " + frequenciesFile.getAbsolutePath());
+ }
+ }
+
+ /**
+ * passiveBuzzTone emits a 1 - second buzz to ensure functionality
+ */
+ public void passiveBuzzTone(){
+ passiveBuzzerOn(passBuzzDC, passiveBuzzerFreq);
+
+ try{
+ Thread.sleep(1000); // Buzz for 1 second
+ } catch (InterruptedException e){
+ Thread.currentThread().interrupt();
+ }
+ passiveBuzzerOff();
+ }
+
+ /**
+ * freChangeTest cycles through frequencies to verify that frequencies are changing
+ */
+ public void toneIterator(){
+ int [] frequencies = { 880, 1760, 3520,9000,15000}; //Can add more frequencies to test
+ for (int freq : frequencies){
+ //passiveBuzzer.setFrequency(freq);
+ log.info(String.valueOf(freq));
+ passiveBuzzerOn(passBuzzDC, freq);
+ try{
+ Thread.sleep(1000); //Play each frequency for a full second
+ } catch (InterruptedException e){
+ Thread.currentThread().interrupt();
+ }
+ passiveBuzzerOff();
+ }
+ }
+
+ /**
+ * Tone sequence cycles through array's containing the frequencies of the first
+ * then digits of pi.
+ */
+
+ //tag::method[]
+ public void piToneSequence(){
+ //end::method[]
+
+ int [] digitsOfPi = {3, 1, 4, 1, 5, 9, 2, 6, 5};
+ int [] frequencies = {261, 293, 329, 349, 392, 440, 493, 523, 587, 659};
+
+ passiveBuzzerOn(passBuzzDC, passiveBuzzerFreq);
+
+ for (int digit : digitsOfPi){
+ int freq = frequencies[digit];
+ passiveBuzzerOn(passBuzzDC, freq);
+ //passiveBuzzer.setFrequency(freq); This is no longer needed.
+ try{
+ Thread.sleep(500); //Pause for beat
+ } catch (InterruptedException e){
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ try{
+ Thread.sleep(1000); //Pause for a second after song concludes
+ } catch (InterruptedException e){
+ Thread.currentThread().interrupt();
+ }
+ passiveBuzzerOff();
+ }
+
+
+}
diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JFactory.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JFactory.java
index a284ccd1..87213723 100644
--- a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JFactory.java
+++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JFactory.java
@@ -28,6 +28,11 @@
@Factory
public class Pi4JFactory {
+ /**
+ * Default constructor for Pi4JFactory.
+ */
+ public Pi4JFactory() { }
+
/**
* This creates the Pi4J Context that is used to create all the beans for the individual components.
* @return A Pi4J Context
diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JMultipinFactory.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JMultipinFactory.java
index 60273cc3..c28950a4 100644
--- a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JMultipinFactory.java
+++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JMultipinFactory.java
@@ -16,6 +16,12 @@
@Factory
public class Pi4JMultipinFactory {
+ /**
+ * Default constructor for Pi4JMultipinFactory.
+ */
+ public Pi4JMultipinFactory() { }
+
+
/**
* Creates a MultipinConfiguration object for a multi pin digital input component.
* @param config {@link DigitalInputMultiPinConfiguration} Object.
From 456cc0d30f556302158c549933c5438db50fc4e0 Mon Sep 17 00:00:00 2001
From: Joe Folen <96354144+joefol@users.noreply.github.com>
Date: Wed, 13 Mar 2024 22:38:52 -0500
Subject: [PATCH 6/8] Adoc Updates (#188)
* updating adocs
* how to use pi4micronaut
* how to use pi4micronaut adoc updates
* adoc updates
* indent fix
* adoc changes addressed
* adoc changes
* adoc link updates
* adoc indent fix
* adoc fix
* adoc final updates
* adoc final final updates
---
.../{gettingStarted.adoc => buildAndRun.adoc} | 61 ++++++++-------
.../Introduction/howToUsePi4Micronaut.adoc | 72 ++++++++++++++++++
.../Introduction/supportedHardware.adoc | 15 ++--
.../src/docs/asciidoc/img/Add_Class.png | Bin 0 -> 256255 bytes
.../docs/asciidoc/img/Add_Configuration.png | Bin 0 -> 127781 bytes
.../docs/asciidoc/img/Adding_Dependency.png | Bin 0 -> 187302 bytes
.../asciidoc/img/Copying_Jar_File_To_Pi.png | Bin 0 -> 58858 bytes
.../src/docs/asciidoc/img/Locate_Jar_File.png | Bin 0 -> 76925 bytes
.../img/SSH_to_Pi_And_Run_Jar_File.png | Bin 0 -> 92880 bytes
.../src/docs/asciidoc/img/Using_Micronaut.png | Bin 0 -> 129198 bytes
.../src/docs/asciidoc/img/build.png | Bin 0 -> 33698 bytes
.../src/docs/asciidoc/index.adoc | 6 +-
12 files changed, 116 insertions(+), 38 deletions(-)
rename pi4micronaut-utils/src/docs/asciidoc/Introduction/{gettingStarted.adoc => buildAndRun.adoc} (66%)
create mode 100644 pi4micronaut-utils/src/docs/asciidoc/Introduction/howToUsePi4Micronaut.adoc
create mode 100644 pi4micronaut-utils/src/docs/asciidoc/img/Add_Class.png
create mode 100644 pi4micronaut-utils/src/docs/asciidoc/img/Add_Configuration.png
create mode 100644 pi4micronaut-utils/src/docs/asciidoc/img/Adding_Dependency.png
create mode 100644 pi4micronaut-utils/src/docs/asciidoc/img/Copying_Jar_File_To_Pi.png
create mode 100644 pi4micronaut-utils/src/docs/asciidoc/img/Locate_Jar_File.png
create mode 100644 pi4micronaut-utils/src/docs/asciidoc/img/SSH_to_Pi_And_Run_Jar_File.png
create mode 100644 pi4micronaut-utils/src/docs/asciidoc/img/Using_Micronaut.png
create mode 100644 pi4micronaut-utils/src/docs/asciidoc/img/build.png
diff --git a/pi4micronaut-utils/src/docs/asciidoc/Introduction/gettingStarted.adoc b/pi4micronaut-utils/src/docs/asciidoc/Introduction/buildAndRun.adoc
similarity index 66%
rename from pi4micronaut-utils/src/docs/asciidoc/Introduction/gettingStarted.adoc
rename to pi4micronaut-utils/src/docs/asciidoc/Introduction/buildAndRun.adoc
index fe39eaae..6ec99014 100644
--- a/pi4micronaut-utils/src/docs/asciidoc/Introduction/gettingStarted.adoc
+++ b/pi4micronaut-utils/src/docs/asciidoc/Introduction/buildAndRun.adoc
@@ -8,21 +8,13 @@ ifdef::rootpath[]
:imagesdir: {rootpath}{imagesdir}
endif::rootpath[]
-=== Getting Started With Pi4Micronaut!
-This section describes how to build and run the jar file from the Pi4Micronaut project on your raspberry pi.
-
-Note: this is not a tutorial on how to use the Pi4Micronaut library, simply a setup guide.
-
-==== Prerequisites
-. Clone our Github repo onto your system
-+
-https://github.com/oss-slu/Pi4Micronaut/tree/main
+=== Build and Run the Jar File on Raspberry Pi
+This section describes how to build and run the jar file from the Pi4Micronaut project demo on your raspberry pi.
==== Set up Raspberry Pi OS
. Start by installing the Raspberry Pi Imager
-. To install the Imager, follow this guide by the Raspberry Pi Foundation:
-+
-https://www.raspberrypi.com/documentation/computers/getting-started.html#install-using-imager
+. To install the Imager, follow this guide by the Raspberry Pi Foundation
+https://www.raspberrypi.com/documentation/computers/getting-started.html#install-using-imager[here].
+
Note: use the same wifi network for your raspberry pi that your system is connected to
. Your configuration should look something like this:
@@ -51,10 +43,8 @@ ssh test@raspberrypi-test
.. Using the IP address of your Pi:
+
-Follow the instructions outlined in this article:
-+
-https://docs.sunfounder.com/projects/picar-s/en/latest/get_started_with_raspberry_pi.html#get-the-ip-address
-
+Follow the instructions outlined in this article
+https://docs.sunfounder.com/projects/picar-s/en/latest/get_started_with_raspberry_pi.html#get-the-ip-address[here].
==== Installing Java
. First, make sure your Raspberry Pi's package list is up-to-date by running the following commands in your Pi's terminal:
@@ -86,53 +76,62 @@ sudo apt-get install pigpio
==== Build and Copy Over Jar File
. Open your terminal of choice
-. Navigate to the Pi4Micronaut root directory
+. Navigate to the project root directory
. Enter the following command into the terminal to build the jar file:
+
[source, bash]
----
./gradlew build
----
-. The necessary components jar file can be found under "../Pi4Micronaut/components/build/libs/"
++
+image:build.png[]
+. The necessary jar file can be found under "Demo_Pi4Micronaut/build/libs/Demo_Pi4Micronaut-0.1-all.jar"
++
+image:Locate_Jar_File.png[]
. Once you have navigated to this directory, enter the following command:
+
[source, bash]
----
-scp components-0.1-all.jar {username}@{hostname}:~
+scp Demo_Pi4Micronaut-0.1-all.jar {username}@{hostname}:~
----
+
-.. Following our configuration from earlier, this would look like
+.. Here is an example command, that looks like
+
[source, bash]
----
-scp components-0.1-all.jar test@raspberrypi-test:~
+scp Demo_Pi4Micronaut-0.1-all.jar test@raspberrypi-test:~
----
++
+image:Copying_Jar_File_To_Pi.png[]
==== Almost Done!
-. To test if you've set up Pi4Micronaut correctly on your raspberry pi, we have some sample commands for you run.
-. Open a new Windows Powershell and ssh into your raspberry pi.
+. To test if you've set up everything correctly on your raspberry pi, we have some sample commands for you to run.
+. Open a new terminal and ssh into your raspberry pi.
. Enter the following command to run the jar file:
+
[source, bash]
----
-sudo java -jar components-0.1-all.jar
+sudo java -jar Demo_Pi4Micronaut-0.1-all.jar
----
+
The output should look like this:
+
-image::running_jar.png[]
+image:SSH_to_Pi_And_Run_Jar_File.png[]
+
With this, a Micronaut localhost server will start running on your machine
+. Let's test the https://oss-slu.github.io/Pi4Micronaut/#_led[LED] component which you have setup.
+
+. After getting everything set up, open up a new terminal and ssh into your pi once more.
-. Let's test one of the components. Take a look at our documentation for setting up the LED component:
-+
-https://oss-slu.github.io/Pi4Micronaut/#_led
-. After getting everything set up, open up a new PowerShell and ssh into your pi once more.
. Enter the following command to test the turn on function for an LED light:
+
-"curl http://localhost:8080/led/ledOn"
-. If this command works and the LED has lit up, congratulations! You have successfully built and run one of our components!
+[source, bash]
+----
+curl http://localhost:8080/led/ledOn
+----
+
+. If this command works and the LED has lit up, congratulations! You have successfully built and ran one of our components!
==== Enabling Different Communication Protocols
. In the Pi4Micronaut library, we have used different communication protocols, such as I2C, SPI, etc.
diff --git a/pi4micronaut-utils/src/docs/asciidoc/Introduction/howToUsePi4Micronaut.adoc b/pi4micronaut-utils/src/docs/asciidoc/Introduction/howToUsePi4Micronaut.adoc
new file mode 100644
index 00000000..0b5c61cf
--- /dev/null
+++ b/pi4micronaut-utils/src/docs/asciidoc/Introduction/howToUsePi4Micronaut.adoc
@@ -0,0 +1,72 @@
+:imagesdir: img/
+
+ifndef::rootpath[]
+:rootpath: ../
+endif::rootpath[]
+
+ifdef::rootpath[]
+:imagesdir: {rootpath}{imagesdir}
+endif::rootpath[]
+
+
+=== How to use the Pi4Micronaut library
+
+This section will walk you through the process of creating a basic
+Micronaut application and the configuration for developing
+with Pi4Micronaut. As a demo, this will include the configuration and sample code.
+
+==== Creating A Micronaut Project
+. Go to Micronaut's website https://micronaut.io/launch/[here].
+. Make sure you have selected Micronaut version 3.10.1 or lower with Java version 17.
+. Click Generate Project and download the zip.
+. Export the contents of the zip file and open it in IntelliJ or any IDE of your choice.
++
+It should look like:
+image:Using_Micronaut.png[]
+
+==== Add Dependency
+. Go to the build.gradle file and find the dependencies.
+. Add the Pi4Micronaut dependency to the list.
++
+[source, gradle]
+----
+implementation("io.github.oss-slu:pi4micronaut-utils:v1.0:all")
+----
++
+It should look like:
+image:Adding_Dependency.png[]
+
+==== Setup Configuration
+. Go to the application.yml file and add the configuration of your circuit setup:
++
+path: Demo_Pi4Micronaut/src/main/resources/application.yml
+. Create a new tree in the yml file as shown below.
++
+[source, yaml]
+----
+pi4j:
+ digital-output:
+ led:
+ name: LED
+ address: 17
+ shutdown: LOW
+ initial: LOW
+ provider: pigpio-digital-output
+----
++
+Here we are specifying a led as a digital output type with name LED, address 17, etc.
+For more information on the LED setup guide, see our documentation https://oss-slu.github.io/Pi4Micronaut/#_led[here].
++
+It should look like:
+image:Add_Configuration.png[]
+
+==== Creating Component Class
+. Create a new class in the project's src directory as shown below.
++
+path: Demo_Pi4Micronaut/src/main/java/com.demoPi4Micronaut
++
+This is where you use the implemented LED functions from Pi4Micronaut library.
+
+. Our example code is:
++
+image:Add_Class.png[]
diff --git a/pi4micronaut-utils/src/docs/asciidoc/Introduction/supportedHardware.adoc b/pi4micronaut-utils/src/docs/asciidoc/Introduction/supportedHardware.adoc
index ef2d1b2d..e2f51f88 100644
--- a/pi4micronaut-utils/src/docs/asciidoc/Introduction/supportedHardware.adoc
+++ b/pi4micronaut-utils/src/docs/asciidoc/Introduction/supportedHardware.adoc
@@ -1,4 +1,4 @@
-=== Currently Supported Hardware
+== Currently Supported Hardware
[.text-right]
https://github.com/oss-slu/Pi4Micronaut/edit/develop/micronautpi4j-utils/src/docs/asciidoc/Introduction/supportedHardware.adoc[Improve this doc]
@@ -10,7 +10,12 @@ We plan on offering support for many more hardware components in the future. If
* Slide Switch
* Rotary Encoder
* RFID Scanner
-* LEDs
-* RGB LEDs
-* LCDs
-* Photosensors
\ No newline at end of file
+* LED
+* RGB LED
+* LCD Screen
+* Photosensor
+* Touch Switch Sensor
+* Active Buzzer
+* Passive Buzzer
+* PIR Motion Sensor
+* Ultrasonic Sensor
\ No newline at end of file
diff --git a/pi4micronaut-utils/src/docs/asciidoc/img/Add_Class.png b/pi4micronaut-utils/src/docs/asciidoc/img/Add_Class.png
new file mode 100644
index 0000000000000000000000000000000000000000..be33a23b19b57996240b634c8f2de9cdcb24c3a2
GIT binary patch
literal 256255
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≻8^@jZ|vtq
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