From e9d836de1a0d59e1f82cfc9395dbf9abaa06d263 Mon Sep 17 00:00:00 2001 From: Joe Folen <96354144+joefol@users.noreply.github.com> Date: Wed, 6 Mar 2024 16:15:49 -0600 Subject: [PATCH 1/8] PIR sensor implementation Issue #166 (#181) * start PIR sensor implementation * PIR sensor helper and controller updates * fix spelling mistake in controller * pir output to input changes * pir output to input location changes * added javadocs in helper and changed rgb colors * address changes with yml and pir controller * fix typo in pir controller --- .../controllers/PIRSensorController.java | 60 ++++++++++++++++ components/src/main/resources/application.yml | 13 ++++ .../inputdevices/PIRSensorHelper.java | 71 +++++++++++++++++++ 3 files changed, 144 insertions(+) create mode 100644 components/src/main/java/com/opensourcewithslu/components/controllers/PIRSensorController.java create mode 100644 pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/PIRSensorHelper.java diff --git a/components/src/main/java/com/opensourcewithslu/components/controllers/PIRSensorController.java b/components/src/main/java/com/opensourcewithslu/components/controllers/PIRSensorController.java new file mode 100644 index 00000000..defb9557 --- /dev/null +++ b/components/src/main/java/com/opensourcewithslu/components/controllers/PIRSensorController.java @@ -0,0 +1,60 @@ +package com.opensourcewithslu.components.controllers; + +import com.opensourcewithslu.inputdevices.PIRSensorHelper; +import com.opensourcewithslu.outputdevices.RGBLEDHelper; +import com.opensourcewithslu.utilities.MultipinConfiguration; +import com.pi4j.io.gpio.digital.DigitalInput; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Get; +import jakarta.inject.Named; + +/** + * The PIRSensorController class is used with the PIRSensorHelper class and RGBHelper class to implement a PIR motion sensor with an RGB LED light. + */ +@Controller("/pirSensor") +public class PIRSensorController { + + private final PIRSensorHelper pirSensorHelper; + + private final RGBLEDHelper rgbledHelper; + + /** + * The PirSensorController constructor. + * @param pirSensor A Pi4J DigitalInput object. + * @param rgbLed A MultiPinConfiguration object. + */ + public PIRSensorController(@Named("pir-sensor")DigitalInput pirSensor, + @Named("rgb-led-2")MultipinConfiguration rgbLed) { + this.pirSensorHelper = new PIRSensorHelper(pirSensor); + this.rgbledHelper = new RGBLEDHelper(rgbLed); + } + + /** + * Enables the PIR sensor by adding an event listener which sets the RGB LED to red when movement is detected and green otherwise. + */ + @Get("/enable") + public void enablePIRSensor() { + + int[] red = {255,0,0}; + int[] green = {0,255,0}; + + pirSensorHelper.addEventListener(e -> { + if (pirSensorHelper.isMoving) { + rgbledHelper.setColor(red); + } + else { + rgbledHelper.setColor(green); + } + }); + } + + /** + * Disables the controller by removing the event listener and turning off the RGB LED. + */ + @Get("/disable") + public void disablePIRSensor() { + pirSensorHelper.removeEventListener(); + rgbledHelper.ledOff(); + } + +} \ No newline at end of file diff --git a/components/src/main/resources/application.yml b/components/src/main/resources/application.yml index 7b1ba504..bf632e38 100644 --- a/components/src/main/resources/application.yml +++ b/components/src/main/resources/application.yml @@ -93,6 +93,12 @@ pi4j: pull: PULL_DOWN debounce: 200000 provider: pigpio-digital-input + pir-sensor: + name: PIR Sensor + address: 13 + pull: PULL_DOWN + debounce: 30000 + provider: pigpio-digital-input ### DIGITAL OUTPUTS digital-output: # tag::digitalOutput[] @@ -144,6 +150,13 @@ pi4j: initials: 0, 0, 0 # <.> shutdowns: 0, 0, 0 # <.> # end::multipwm[] + rgb-led-2: + name: RGB LED 2 + addresses: 18, 27, 22 + pwmTypes: SOFTWARE, SOFTWARE, SOFTWARE + provider: pigpio-pwm + initials: 0, 0, 0 + shutdowns: 0, 0, 0 # clk: # name: CLK Output # address: 23 diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/PIRSensorHelper.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/PIRSensorHelper.java new file mode 100644 index 00000000..15888a7a --- /dev/null +++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/PIRSensorHelper.java @@ -0,0 +1,71 @@ +package com.opensourcewithslu.inputdevices; + +import com.pi4j.io.gpio.digital.DigitalInput; +import com.pi4j.io.gpio.digital.DigitalStateChangeListener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The PIRSensorHelper class is used to initialize a PIR motion sensor. + */ +public class PIRSensorHelper { + + private static final Logger log = LoggerFactory.getLogger(PIRSensorHelper.class); + + private final DigitalInput pirSensorInput; + + private DigitalStateChangeListener pirSensorInputListener; + + /** + * Shows if the PIR sensor detects movement or not. + */ + public boolean isMoving; + + /** + * PIRSensorHelper constructor + * @param pirSensorOutput A Pi4J DigitalInput object. + */ + public PIRSensorHelper(DigitalInput pirSensorOutput) + { + this.pirSensorInput = pirSensorOutput; + this.isMoving = pirSensorInput.isHigh(); + + 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. + */ + public void initialize() + { + log.info("Initializing PIR Sensor"); + + pirSensorInputListener = e-> isMoving = pirSensorInput.isHigh(); + pirSensorInput.addListener(pirSensorInputListener); + } + + /** + * Adds an event listener to the PIR sensor. + * @param function A Pi4J DigitalStateChangeListener object. + */ + public void addEventListener(DigitalStateChangeListener function) + { + log.info("Adding event listener"); + + pirSensorInputListener = function; + pirSensorInput.addListener(pirSensorInputListener); + } + + /** + * Removes the event listener from the PIR sensor. + */ + public void removeEventListener() + { + log.info("Removing event listener"); + + if (pirSensorInputListener != null) { + pirSensorInput.removeListener(pirSensorInputListener); + pirSensorInputListener = null; + } + } +} \ No newline at end of file From 93b426e741b54e23779f087514324cec944653e4 Mon Sep 17 00:00:00 2001 From: Ruthvik Mannem <116761292+ruthvikm@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:29:21 -0500 Subject: [PATCH 2/8] Fixed Integration Bugs (#187) --- pi4micronaut-utils/.gitignore | 1 + pi4micronaut-utils/build.gradle | 8 +- .../src/docs/javadoc/allclasses-index.html | 147 --- .../src/docs/javadoc/allpackages-index.html | 71 -- .../com/opensourcewithslu/Application.html | 165 ---- .../inputdevices/PhotoResistorHelper.html | 280 ------ .../inputdevices/PushButtonHelper.html | 232 ----- .../inputdevices/RFidHelper.html | 224 ----- .../inputdevices/RotaryEncoderHelper.html | 184 ---- .../inputdevices/SlideSwitchHelper.html | 232 ----- .../inputdevices/TouchSwitchHelper.html | 228 ----- .../inputdevices/package-summary.html | 118 --- .../inputdevices/package-tree.html | 75 -- .../outputdevices/ActiveBuzzerHelper.html | 248 ----- .../outputdevices/LCD1602Helper.html | 238 ----- .../outputdevices/LEDHelper.html | 192 ---- .../outputdevices/RGBLEDHelper.html | 355 ------- .../outputdevices/package-summary.html | 110 --- .../outputdevices/package-tree.html | 73 -- .../opensourcewithslu/package-summary.html | 98 -- .../com/opensourcewithslu/package-tree.html | 70 -- .../utilities/DigitalInputConfiguration.html | 334 ------- .../utilities/DigitalOutputConfiguration.html | 334 ------- .../DigitalInputMultiPinConfiguration.html | 334 ------- .../PwmMultiPinConfiguration.html | 366 -------- .../MultiPinConfigs/package-summary.html | 98 -- .../MultiPinConfigs/package-tree.html | 71 -- .../utilities/MultipinConfiguration.html | 192 ---- .../utilities/Pi4JFactory.html | 278 ------ .../utilities/Pi4JMultipinFactory.html | 194 ---- .../utilities/PwmConfiguration.html | 366 -------- .../utilities/SpiConfiguration.html | 302 ------ .../utilities/i2cConfiguration.html | 270 ------ .../utilities/package-summary.html | 128 --- .../utilities/package-tree.html | 77 -- .../src/docs/javadoc/element-list | 5 - .../src/docs/javadoc/help-doc.html | 175 ---- .../src/docs/javadoc/index-all.html | 819 ----------------- .../src/docs/javadoc/index.html | 73 -- .../src/docs/javadoc/jquery-ui.overrides.css | 35 - .../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 - .../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 | 94 -- .../src/docs/javadoc/package-search-index.js | 1 - .../src/docs/javadoc/resources/glass.png | Bin 499 -> 0 bytes .../src/docs/javadoc/resources/x.png | Bin 394 -> 0 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 | 132 --- pi4micronaut-utils/src/docs/javadoc/search.js | 354 ------- .../src/docs/javadoc/stylesheet.css | 866 ------------------ .../src/docs/javadoc/tag-search-index.js | 1 - .../src/docs/javadoc/type-search-index.js | 1 - .../utilities/DigitalInputConfiguration.java | 2 + .../utilities/DigitalOutputConfiguration.java | 4 + .../utilities/Pi4JFactory.java | 19 +- .../utilities/Pi4JMultipinFactory.java | 2 + .../utilities/PwmConfiguration.java | 2 + .../utilities/SpiConfiguration.java | 2 + .../utilities/i2cConfiguration.java | 2 + 66 files changed, 30 insertions(+), 9416 deletions(-) delete mode 100644 pi4micronaut-utils/src/docs/javadoc/allclasses-index.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/allpackages-index.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/Application.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PhotoResistorHelper.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PushButtonHelper.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/RFidHelper.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/RotaryEncoderHelper.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/SlideSwitchHelper.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/TouchSwitchHelper.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-summary.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-tree.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/ActiveBuzzerHelper.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/LCD1602Helper.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/LEDHelper.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/RGBLEDHelper.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-summary.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-tree.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-summary.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-tree.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalInputConfiguration.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalOutputConfiguration.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/DigitalInputMultiPinConfiguration.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/PwmMultiPinConfiguration.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/package-summary.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/package-tree.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultipinConfiguration.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JFactory.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JMultipinFactory.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/PwmConfiguration.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/SpiConfiguration.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/i2cConfiguration.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/package-summary.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/package-tree.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/element-list delete mode 100644 pi4micronaut-utils/src/docs/javadoc/help-doc.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/index-all.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/index.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/jquery-ui.overrides.css delete mode 100644 pi4micronaut-utils/src/docs/javadoc/legal/COPYRIGHT delete mode 100644 pi4micronaut-utils/src/docs/javadoc/legal/LICENSE delete mode 100644 pi4micronaut-utils/src/docs/javadoc/legal/jquery.md delete mode 100644 pi4micronaut-utils/src/docs/javadoc/legal/jqueryUI.md delete mode 100644 pi4micronaut-utils/src/docs/javadoc/member-search-index.js delete mode 100644 pi4micronaut-utils/src/docs/javadoc/module-search-index.js delete mode 100644 pi4micronaut-utils/src/docs/javadoc/overview-summary.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/overview-tree.html delete mode 100644 pi4micronaut-utils/src/docs/javadoc/package-search-index.js delete mode 100644 pi4micronaut-utils/src/docs/javadoc/resources/glass.png delete mode 100644 pi4micronaut-utils/src/docs/javadoc/resources/x.png delete mode 100644 pi4micronaut-utils/src/docs/javadoc/script-dir/jquery-3.6.1.min.js delete mode 100644 pi4micronaut-utils/src/docs/javadoc/script-dir/jquery-ui.min.css delete mode 100644 pi4micronaut-utils/src/docs/javadoc/script-dir/jquery-ui.min.js delete mode 100644 pi4micronaut-utils/src/docs/javadoc/script.js delete mode 100644 pi4micronaut-utils/src/docs/javadoc/search.js delete mode 100644 pi4micronaut-utils/src/docs/javadoc/stylesheet.css delete mode 100644 pi4micronaut-utils/src/docs/javadoc/tag-search-index.js delete mode 100644 pi4micronaut-utils/src/docs/javadoc/type-search-index.js diff --git a/pi4micronaut-utils/.gitignore b/pi4micronaut-utils/.gitignore index 5dacd506..c72da8f3 100644 --- a/pi4micronaut-utils/.gitignore +++ b/pi4micronaut-utils/.gitignore @@ -5,6 +5,7 @@ bin/ build/ target/ out/ +src/docs/javadoc .micronaut/ .idea *.iml diff --git a/pi4micronaut-utils/build.gradle b/pi4micronaut-utils/build.gradle index 01c0554f..302117e0 100644 --- a/pi4micronaut-utils/build.gradle +++ b/pi4micronaut-utils/build.gradle @@ -7,7 +7,7 @@ plugins { } group = 'io.github.oss-slu' -version = 'v1.0' +version = '1.0' apply plugin: 'maven-publish' apply plugin: 'signing' @@ -35,6 +35,8 @@ java { targetCompatibility = JavaVersion.toVersion("17") } +tasks.build.dependsOn {tasks.javadoc; tasks.shadowJar} + tasks.named('build').configure { dependsOn 'javadoc' copy { @@ -77,7 +79,7 @@ artifacts { publishing { repositories { - maven { //only for users registered in Sonatype after 24 Feb 2021 + maven { name = "OSSRH" credentials { username = project.findProperty('SONATYPE_USERNAME') ?: System.getenv('SONATYPE_USERNAME') @@ -93,7 +95,7 @@ publishing { mavenJava(MavenPublication) { groupId = 'io.github.oss-slu' artifactId = 'pi4micronaut-utils' - version = 'v0.1' + version = '1.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 deleted file mode 100644 index 4b00ae42..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/allclasses-index.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - -All Classes and Interfaces (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

All Classes and Interfaces

-
-
-
Classes
-
-
Class
-
Description
- -
-
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 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 deleted file mode 100644 index 0e157cff..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/allpackages-index.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - -All Packages (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

All Packages

-
-
Package Summary
- -
-
-
- - diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/Application.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/Application.html deleted file mode 100644 index a3c351de..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/Application.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - -Application (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class Application

-
-
java.lang.Object -
com.opensourcewithslu.Application
-
-
-
-
public class Application -extends Object
-
Runs the Micronaut framework in the Pi4Micronaut framework.
-
-
- -
-
-
    - -
  • -
    -

    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/PhotoResistorHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PhotoResistorHelper.html deleted file mode 100644 index e13d5e49..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PhotoResistorHelper.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - -PhotoResistorHelper (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class PhotoResistorHelper

-
-
java.lang.Object -
com.opensourcewithslu.inputdevices.PhotoResistorHelper
-
-
-
-
public class PhotoResistorHelper -extends Object
-
The PhotoResistorHelper class is used to work with the functionalities of a Photo Resistor.
-
-
-
    - -
  • -
    -

    Field Summary

    -
    Fields
    -
    -
    Modifier and Type
    -
    Field
    -
    Description
    -
    boolean
    - -
    -
    To check if it is Dark.
    -
    -
    -
    -
  • - -
  • -
    -

    Constructor Summary

    -
    Constructors
    -
    -
    Constructor
    -
    Description
    -
    PhotoResistorHelper(com.pi4j.io.gpio.digital.DigitalInput sensorInput, - com.pi4j.io.gpio.digital.DigitalOutput sensorOutput)
    -
    -
    TouchSwitchHelper constructor.
    -
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    -
    void
    -
    addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
    -
    -
    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
    -
    setDarknessThreshold(int darknessThreshold)
    -
    -
    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.
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      PhotoResistorHelper

      -
      public PhotoResistorHelper(com.pi4j.io.gpio.digital.DigitalInput sensorInput, - com.pi4j.io.gpio.digital.DigitalOutput sensorOutput)
      -
      TouchSwitchHelper constructor.
      -
      -
      Parameters:
      -
      sensorInput - - A Pi4J DigitalInput object.
      -
      sensorOutput - - A Pi4J DigitalOutput object.
      -
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Method Details

    -
      -
    • -
      -

      getDark

      -
      public int getDark()
      -
      -
    • -
    • -
      -

      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 deleted file mode 100644 index e3eee5d3..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/PushButtonHelper.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - -PushButtonHelper (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class PushButtonHelper

-
-
java.lang.Object -
com.opensourcewithslu.inputdevices.PushButtonHelper
-
-
-
-
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
    -
    -
    Modifier and Type
    -
    Field
    -
    Description
    - - -
    -
    Determines if the button is pressed.
    -
    -
    -
    -
  • - -
  • -
    -

    Constructor Summary

    -
    Constructors
    -
    -
    Constructor
    -
    Description
    -
    PushButtonHelper(com.pi4j.io.gpio.digital.DigitalInput buttonInput)
    -
    -
    The PushButtonHelper constructor.
    -
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    -
    void
    -
    addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
    -
    -
    Adds an EventListener to the PushButton.
    -
    -
    void
    - -
    -
    Initializes the PushButton.
    -
    -
    void
    -
    removeEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
    -
    -
    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

      -
      public Boolean isPressed
      -
      Determines if the button is pressed.
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      PushButtonHelper

      -
      public PushButtonHelper(com.pi4j.io.gpio.digital.DigitalInput buttonInput)
      -
      The PushButtonHelper constructor.
      -
      -
      Parameters:
      -
      buttonInput - A Pi4J DigitalInput Object.
      -
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    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 deleted file mode 100644 index dac06d6b..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/RFidHelper.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - -RFidHelper (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class RFidHelper

-
-
java.lang.Object -
com.opensourcewithslu.inputdevices.RFidHelper
-
-
-
-
public class RFidHelper -extends Object
-
The RFIDHelper class is for interacting with an RFID scanner.
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    Constructors
    -
    -
    Constructor
    -
    Description
    -
    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

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    - - -
    -
    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

      -
      public Object 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 deleted file mode 100644 index 73ec158c..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/RotaryEncoderHelper.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - -RotaryEncoderHelper (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class RotaryEncoderHelper

-
-
java.lang.Object -
com.opensourcewithslu.inputdevices.RotaryEncoderHelper
-
-
-
-
public class RotaryEncoderHelper -extends Object
-
The RotaryEncoderHelper class initializes a rotary encoder component and returns the value of the encoder when called upon.
-
-
- -
-
-
    - -
  • -
    -

    Constructor Details

    - -
    -
  • - -
  • -
    -

    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 deleted file mode 100644 index 09740df4..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/SlideSwitchHelper.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - -SlideSwitchHelper (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class SlideSwitchHelper

-
-
java.lang.Object -
com.opensourcewithslu.inputdevices.SlideSwitchHelper
-
-
-
-
public class SlideSwitchHelper -extends Object
-
The SlideSwitchHelper class is used to initialize a slide switch.
-
-
-
    - -
  • -
    -

    Field Summary

    -
    Fields
    -
    -
    Modifier and Type
    -
    Field
    -
    Description
    -
    boolean
    - -
    -
    Shows if the slide switch is on.
    -
    -
    -
    -
  • - -
  • -
    -

    Constructor Summary

    -
    Constructors
    -
    -
    Constructor
    -
    Description
    -
    SlideSwitchHelper(com.pi4j.io.gpio.digital.DigitalInput slideSwitchInput)
    -
    -
    SlideSwitchHelper constructor.
    -
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    -
    void
    -
    addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
    -
    -
    Adds an EvenListener to the slide switch.
    -
    -
    void
    - -
    -
    Initializes the listener that keeps track of whether the slide switch is high/low.
    -
    -
    void
    -
    removeEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
    -
    -
    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.
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      SlideSwitchHelper

      -
      public SlideSwitchHelper(com.pi4j.io.gpio.digital.DigitalInput slideSwitchInput)
      -
      SlideSwitchHelper constructor.
      -
      -
      Parameters:
      -
      slideSwitchInput - A Pi4J DigitalInput Object.
      -
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    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 deleted file mode 100644 index e863b325..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/TouchSwitchHelper.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - -TouchSwitchHelper (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class TouchSwitchHelper

-
-
java.lang.Object -
com.opensourcewithslu.inputdevices.TouchSwitchHelper
-
-
-
-
public class TouchSwitchHelper -extends Object
-
The TouchSwitchHelper class is used to initialize a touch switch.
-
-
-
    - -
  • -
    -

    Field Summary

    -
    Fields
    -
    -
    Modifier and Type
    -
    Field
    -
    Description
    -
    boolean
    - -
    -
    Shows if the touch switch has been touched.
    -
    -
    -
    -
  • - -
  • -
    -

    Constructor Summary

    -
    Constructors
    -
    -
    Constructor
    -
    Description
    -
    TouchSwitchHelper(com.pi4j.io.gpio.digital.DigitalInput touchSwitchInput)
    -
    -
    TouchSwitchHelper constructor.
    -
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    -
    void
    -
    addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
    -
    -
    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.
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      TouchSwitchHelper

      -
      public TouchSwitchHelper(com.pi4j.io.gpio.digital.DigitalInput touchSwitchInput)
      -
      TouchSwitchHelper constructor.
      -
      -
      Parameters:
      -
      touchSwitchInput - A Pi4J DigitalInput object.
      -
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    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 deleted file mode 100644 index 8c1bcdb0..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-summary.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - -com.opensourcewithslu.inputdevices (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

Package com.opensourcewithslu.inputdevices

-
-
-
package com.opensourcewithslu.inputdevices
-
- -
-
-
-
- - 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 deleted file mode 100644 index f042e50f..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-tree.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - -com.opensourcewithslu.inputdevices Class Hierarchy (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

Hierarchy For Package com.opensourcewithslu.inputdevices

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
-
-
-
- - diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/ActiveBuzzerHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/ActiveBuzzerHelper.html deleted file mode 100644 index 5cccaefa..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/ActiveBuzzerHelper.html +++ /dev/null @@ -1,248 +0,0 @@ - - - - -ActiveBuzzerHelper (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class ActiveBuzzerHelper

-
-
java.lang.Object -
com.opensourcewithslu.outputdevices.ActiveBuzzerHelper
-
-
-
-
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
    -
    -
    Modifier and Type
    -
    Field
    -
    Description
    -
    protected boolean
    - -
     
    -
    -
    -
  • - -
  • -
    -

    Constructor Summary

    -
    Constructors
    -
    -
    Constructor
    -
    Description
    -
    ActiveBuzzerHelper(com.pi4j.io.pwm.Pwm activeBuzzer)
    -
    -
    BuzzerHelper constructor
    -
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    -
    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
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    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 deleted file mode 100644 index 68f6f35b..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/LCD1602Helper.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - -LCD1602Helper (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class LCD1602Helper

-
-
java.lang.Object -
com.opensourcewithslu.outputdevices.LCD1602Helper
-
-
-
-
public class LCD1602Helper -extends Object
-
This helper class, LCD1602Helper, is for controlling and interacting with an I2C LCD1602 display.
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    Constructors
    -
    -
    Constructor
    -
    Description
    -
    LCD1602Helper(com.pi4j.io.i2c.I2CConfig i2CConfig, - com.pi4j.context.Context pi4jContext)
    -
    -
    The LCD1602Helper constructor.
    -
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    -
    void
    - -
    -
    Clears the display of text.
    -
    -
    void
    -
    clearLine(int line)
    -
    -
    Clears the text of the specified line.
    -
    -
    void
    -
    setBackLight(boolean state)
    -
    -
    Setting the backlight state of the LCD based off the boolean input.
    -
    -
    void
    - -
    -
    Writes a String to the display.
    -
    -
    void
    -
    writeTextAtLine(String text, - int line)
    -
    -
    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 deleted file mode 100644 index c9c1eed2..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/LEDHelper.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - -LEDHelper (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class LEDHelper

-
-
java.lang.Object -
com.opensourcewithslu.outputdevices.LEDHelper
-
-
-
-
public class LEDHelper -extends Object
-
The class LEDHelper contains methods that pertain to the control of a LED.
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    Constructors
    -
    -
    Constructor
    -
    Description
    -
    LEDHelper(com.pi4j.io.gpio.digital.DigitalOutput ledOutput)
    -
    -
    LEGHelper constructor.
    -
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    -
    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 deleted file mode 100644 index a3890907..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/RGBLEDHelper.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - -RGBLEDHelper (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class RGBLEDHelper

-
-
java.lang.Object -
com.opensourcewithslu.outputdevices.RGBLEDHelper
-
-
-
-
public class RGBLEDHelper -extends Object
-
The RBGLEDHelper class handles all interactions with a RGB LED.
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    Constructors
    -
    -
    Constructor
    -
    Description
    - -
    -
    The RGBLEDHelper constructor.
    -
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    -
    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
    -
    setBlue(int blue)
    -
    -
    Sets the blue value of the LED.
    -
    -
    void
    -
    setBlue(int blue, - int frequency)
    -
    -
    Sets the blue value and frequency of the LED.
    -
    -
    void
    -
    setColor(int[] colors)
    -
    -
    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
    -
    setColorHex(String hex, - int[] frequency)
    -
    -
    Setting the color of the LED using a hexadecimal value and an array of frequencies.
    -
    -
    void
    -
    setGreen(int green)
    -
    -
    Sets the green value of the LED.
    -
    -
    void
    -
    setGreen(int green, - int frequency)
    -
    -
    Sets the green value and frequency of the LED.
    -
    -
    void
    -
    setRed(int red)
    -
    -
    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
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Constructor Details

    - -
    -
  • - -
  • -
    -

    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 deleted file mode 100644 index 55cc0fbc..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-summary.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - -com.opensourcewithslu.outputdevices (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

Package com.opensourcewithslu.outputdevices

-
-
-
package com.opensourcewithslu.outputdevices
-
- -
-
-
-
- - 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 deleted file mode 100644 index 77d2a7b0..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/outputdevices/package-tree.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - -com.opensourcewithslu.outputdevices Class Hierarchy (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

Hierarchy For Package com.opensourcewithslu.outputdevices

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
-
-
-
- - diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-summary.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-summary.html deleted file mode 100644 index dd08c400..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-summary.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - -com.opensourcewithslu (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

Package com.opensourcewithslu

-
-
-
package com.opensourcewithslu
-
- -
-
-
-
- - diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-tree.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-tree.html deleted file mode 100644 index fc24e6a5..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/package-tree.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - -com.opensourcewithslu Class Hierarchy (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

Hierarchy For Package com.opensourcewithslu

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
-
-
-
- - diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalInputConfiguration.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalInputConfiguration.html deleted file mode 100644 index 0d83b5f1..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalInputConfiguration.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - -DigitalInputConfiguration (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class DigitalInputConfiguration

-
-
java.lang.Object -
com.opensourcewithslu.utilities.DigitalInputConfiguration
-
-
-
-
@EachProperty("pi4j.digital-input") -public class DigitalInputConfiguration -extends Object
-
This class handles the configuration of a digital input component.
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    Constructors
    -
    -
    Constructor
    -
    Description
    - -
    -
    Constructor for the DigitalInputConfiguration.
    -
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    -
    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
    -
    setAddress(int address)
    -
    -
    Sets the pin address.
    -
    -
    void
    -
    setDebounce(Long debounce)
    -
    -
    Sets the debounce of the component.
    -
    -
    void
    - -
    -
    Sets the name of the component.
    -
    -
    void
    -
    setProvider(String provider)
    -
    -
    Sets the provider.
    -
    -
    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

      -
      public String getId()
      -
      Gets the id of the component.
      -
      -
      Returns:
      -
      The id of the component.
      -
      -
      -
    • -
    • -
      -

      getName

      -
      public String 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

      -
      public String 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 deleted file mode 100644 index 78cc2d32..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/DigitalOutputConfiguration.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - -DigitalOutputConfiguration (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class DigitalOutputConfiguration

-
-
java.lang.Object -
com.opensourcewithslu.utilities.DigitalOutputConfiguration
-
-
-
-
@EachProperty("pi4j.digital-output") -public class DigitalOutputConfiguration -extends Object
-
This class handles the configuration of a digital output component.
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    Constructors
    -
    -
    Constructor
    -
    Description
    - -
    -
    The DigitalOutputConfiguration constructor.
    -
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    -
    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
    -
    setAddress(int address)
    -
    -
    Sets the pin address.
    -
    -
    void
    -
    setInitial(com.pi4j.io.gpio.digital.DigitalState initial)
    -
    -
    Sets the initial state for the component.
    -
    -
    void
    - -
    -
    Sets the name of the component.
    -
    -
    void
    -
    setProvider(String provider)
    -
    -
    Sets the provider.
    -
    -
    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

      -
      public String getId()
      -
      Gets the id of the component.
      -
      -
      Returns:
      -
      The id of the component.
      -
      -
      -
    • -
    • -
      -

      getName

      -
      public String 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

      -
      public String 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 deleted file mode 100644 index 10c17bf2..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/DigitalInputMultiPinConfiguration.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - -DigitalInputMultiPinConfiguration (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class DigitalInputMultiPinConfiguration

-
-
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 Details

    -
      -
    • -
      -

      DigitalInputMultiPinConfiguration

      -
      public DigitalInputMultiPinConfiguration(@Parameter - String id)
      -
      The DigitalInputMultiPinConfiguration constructor.
      -
      -
      Parameters:
      -
      id - The configuration id as defined in the application.yml
      -
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Method Details

    -
      -
    • -
      -

      getId

      -
      public String getId()
      -
      Gets the id of the component.
      -
      -
      Returns:
      -
      The id of the component.
      -
      -
      -
    • -
    • -
      -

      getName

      -
      public String 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

      -
      public String 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 deleted file mode 100644 index 8fff1f3f..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/PwmMultiPinConfiguration.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - -PwmMultiPinConfiguration (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class PwmMultiPinConfiguration

-
-
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 Details

    -
      -
    • -
      -

      PwmMultiPinConfiguration

      -
      public PwmMultiPinConfiguration(@Parameter - String id)
      -
      The PwmMultiPinConfiguration constructor.
      -
      -
      Parameters:
      -
      id - The configuration id as defined in the application.yml
      -
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Method Details

    -
      -
    • -
      -

      getId

      -
      public String getId()
      -
      Gets the id of the component.
      -
      -
      Returns:
      -
      The id of the component.
      -
      -
      -
    • -
    • -
      -

      getName

      -
      public String 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

      -
      public String 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 deleted file mode 100644 index 06fbc033..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/package-summary.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - -com.opensourcewithslu.utilities.MultiPinConfigs (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

Package com.opensourcewithslu.utilities.MultiPinConfigs

-
-
-
package com.opensourcewithslu.utilities.MultiPinConfigs
-
- -
-
-
-
- - 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 deleted file mode 100644 index 9a70b247..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultiPinConfigs/package-tree.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - -com.opensourcewithslu.utilities.MultiPinConfigs Class Hierarchy (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

Hierarchy For Package com.opensourcewithslu.utilities.MultiPinConfigs

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
-
-
-
- - diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultipinConfiguration.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultipinConfiguration.html deleted file mode 100644 index 433ae2a3..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/MultipinConfiguration.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - -MultipinConfiguration (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class MultipinConfiguration

-
-
java.lang.Object -
com.opensourcewithslu.utilities.MultipinConfiguration
-
-
-
-
@Prototype -public class MultipinConfiguration -extends Object
-
Class for configuring multipin components.
-
-
- -
-
-
    - -
  • -
    -

    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

      -
      public String 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 deleted file mode 100644 index bb3c279d..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JFactory.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - -Pi4JFactory (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class Pi4JFactory

-
-
java.lang.Object -
com.opensourcewithslu.utilities.Pi4JFactory
-
-
-
-
@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
    -
    -
    Constructor
    -
    Description
    - -
     
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    -
    com.pi4j.io.gpio.digital.DigitalInput
    -
    createDigitalInput(DigitalInputConfiguration config, - com.pi4j.context.Context pi4jContext)
    -
    -
    Creates a DigitalInput object for digital input components.
    -
    -
    com.pi4j.io.gpio.digital.DigitalOutput
    -
    createDigitalOutput(DigitalOutputConfiguration config, - com.pi4j.context.Context pi4jContext)
    -
    -
    Creates a DigitalOutput object for digital output components.
    -
    -
    com.pi4j.io.i2c.I2CConfig
    -
    createI2C(i2cConfiguration config, - com.pi4j.context.Context pi4jContext)
    -
    -
    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
    -
    createPwm(PwmConfiguration config, - com.pi4j.context.Context pi4jContext)
    -
    -
    Creates a PWM object for components that are pwm.
    -
    -
    com.pi4j.io.spi.SpiConfig
    -
    createSpi(SpiConfiguration config, - com.pi4j.context.Context pi4jContext)
    -
    -
    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

      -
      @EachBean(DigitalOutputConfiguration.class) -public com.pi4j.io.gpio.digital.DigitalOutput createDigitalOutput(DigitalOutputConfiguration config, - com.pi4j.context.Context pi4jContext)
      -
      Creates a DigitalOutput object for digital output components.
      -
      -
      Parameters:
      -
      config - DigitalOutputConfiguration Object.
      -
      pi4jContext - The Pi4J Context.
      -
      Returns:
      -
      A DigitalOutput Object.
      -
      -
      -
    • -
    • -
      -

      createDigitalInput

      -
      @EachBean(DigitalInputConfiguration.class) -public com.pi4j.io.gpio.digital.DigitalInput createDigitalInput(DigitalInputConfiguration config, - com.pi4j.context.Context pi4jContext)
      -
      Creates a DigitalInput object for digital input components.
      -
      -
      Parameters:
      -
      config - DigitalInputConfiguration Object.
      -
      pi4jContext - The Pi4J Context.
      -
      Returns:
      -
      A DigitalInput Object.
      -
      -
      -
    • -
    • -
      -

      createPwm

      -
      @EachBean(PwmConfiguration.class) -public com.pi4j.io.pwm.Pwm createPwm(PwmConfiguration config, - com.pi4j.context.Context pi4jContext)
      -
      Creates a PWM object for components that are pwm.
      -
      -
      Parameters:
      -
      config - PwmConfiguration Object.
      -
      pi4jContext - The Pi4J Context.
      -
      Returns:
      -
      A PWM Object.
      -
      -
      -
    • -
    • -
      -

      createSpi

      -
      @EachBean(SpiConfiguration.class) -public com.pi4j.io.spi.SpiConfig createSpi(SpiConfiguration config, - com.pi4j.context.Context pi4jContext)
      -
      Creates an SpiConfigBuilder object for components that are SPI.
      -
      -
      Parameters:
      -
      config - SpiConfiguration Object.
      -
      pi4jContext - The Pi4J Context.
      -
      Returns:
      -
      A SpiConfigBuilder Object.
      -
      -
      -
    • -
    • -
      -

      createI2C

      -
      @EachBean(i2cConfiguration.class) -public com.pi4j.io.i2c.I2CConfig createI2C(i2cConfiguration config, - com.pi4j.context.Context pi4jContext)
      -
      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 deleted file mode 100644 index 5e6c6bb6..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/Pi4JMultipinFactory.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - -Pi4JMultipinFactory (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class Pi4JMultipinFactory

-
-
java.lang.Object -
com.opensourcewithslu.utilities.Pi4JMultipinFactory
-
-
-
-
@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.
-
-
- -
-
- -
- -
-
-
- - diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/PwmConfiguration.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/PwmConfiguration.html deleted file mode 100644 index 6fa0f4ca..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/PwmConfiguration.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - -PwmConfiguration (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class PwmConfiguration

-
-
java.lang.Object -
com.opensourcewithslu.utilities.PwmConfiguration
-
-
-
-
@EachProperty("pi4j.pwm") -public class PwmConfiguration -extends Object
-
The PwmConfiguration class handles the configuration of a pwm component.
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    Constructors
    -
    -
    Constructor
    -
    Description
    - -
    -
    PwmConfiguration constructor.
    -
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    -
    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
    -
    setAddress(int address)
    -
    -
    Sets a new pin address for the component.
    -
    -
    void
    -
    setInital(int inital)
    -
    -
    Sets the initial state that the component will be in when first initialized.
    -
    -
    void
    - -
    -
    Sets the name of the component.
    -
    -
    void
    -
    setProvider(String provider)
    -
    -
    Sets the provider of the component.
    -
    -
    void
    -
    setPwmType(String pwmType)
    -
    -
    Sets the pwm type.
    -
    -
    void
    -
    setShutdown(int 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

    -
      -
    • -
      -

      PwmConfiguration

      -
      public PwmConfiguration(@Parameter - String id)
      -
      PwmConfiguration constructor.
      -
      -
      Parameters:
      -
      id - The configuration id as defined in the application.yml
      -
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Method Details

    -
      -
    • -
      -

      getId

      -
      public String getId()
      -
      Gets the id of the component.
      -
      -
      Returns:
      -
      The id of the component.
      -
      -
      -
    • -
    • -
      -

      getName

      -
      public String 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

      -
      public String 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 deleted file mode 100644 index cf049272..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/SpiConfiguration.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - -SpiConfiguration (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class SpiConfiguration

-
-
java.lang.Object -
com.opensourcewithslu.utilities.SpiConfiguration
-
-
-
-
@EachProperty("pi4j.spi") -public class SpiConfiguration -extends Object
-
This class handles the configuration of a SPI component.
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    Constructors
    -
    -
    Constructor
    -
    Description
    - -
    -
    The SpiConfiguration constructor.
    -
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    -
    -
    Modifier and Type
    -
    Method
    -
    Description
    -
    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
    -
    setBaud(int baud)
    -
    -
    Sets the baud rate for the component.
    -
    -
    void
    -
    setChannel(int channel)
    -
    -
    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

      -
      public String getId()
      -
      Gets the id of the component.
      -
      -
      Returns:
      -
      The id of the component.
      -
      -
      -
    • -
    • -
      -

      getName

      -
      public String 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 deleted file mode 100644 index b8b4c0a6..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/i2cConfiguration.html +++ /dev/null @@ -1,270 +0,0 @@ - - - - -i2cConfiguration (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
- -

Class i2cConfiguration

-
-
java.lang.Object -
com.opensourcewithslu.utilities.i2cConfiguration
-
-
-
-
@EachProperty("pi4j.i2c") -public class i2cConfiguration -extends Object
-
This class handles the configuration of an I2C components.
-
-
- -
-
-
    - -
  • -
    -

    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

      -
      public String getId()
      -
      Gets the id of the component.
      -
      -
      Returns:
      -
      The id of the component.
      -
      -
      -
    • -
    • -
      -

      getName

      -
      public String 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 deleted file mode 100644 index 1cc7d006..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/package-summary.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - -com.opensourcewithslu.utilities (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

Package com.opensourcewithslu.utilities

-
-
-
package com.opensourcewithslu.utilities
-
- -
-
-
-
- - 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 deleted file mode 100644 index 2307ca82..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/utilities/package-tree.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - -com.opensourcewithslu.utilities Class Hierarchy (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

Hierarchy For Package com.opensourcewithslu.utilities

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
-
-
-
- - diff --git a/pi4micronaut-utils/src/docs/javadoc/element-list b/pi4micronaut-utils/src/docs/javadoc/element-list deleted file mode 100644 index 6c0109fb..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/element-list +++ /dev/null @@ -1,5 +0,0 @@ -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 deleted file mode 100644 index 57a796d8..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/help-doc.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - -API Help (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-

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 - -
-
-
-

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
  • -
  • Exceptions
  • -
  • Errors
  • -
  • 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.

-
-
-

Index

-

The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

-
-
-
-This help file applies to API documentation generated by the standard doclet.
-
-
- - diff --git a/pi4micronaut-utils/src/docs/javadoc/index-all.html b/pi4micronaut-utils/src/docs/javadoc/index-all.html deleted file mode 100644 index 78daa985..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/index-all.html +++ /dev/null @@ -1,819 +0,0 @@ - - - - -Index (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-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
-
 
-
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.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.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.
-
-
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
-
 
-
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.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 deleted file mode 100644 index e80f308d..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - -Overview (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
-
-

pi4micronaut-utils v1.0 API

-
- -
-
-
- - diff --git a/pi4micronaut-utils/src/docs/javadoc/jquery-ui.overrides.css b/pi4micronaut-utils/src/docs/javadoc/jquery-ui.overrides.css deleted file mode 100644 index 03c010ba..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/jquery-ui.overrides.css +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ - -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active, -a.ui-button:active, -.ui-button:active, -.ui-button.ui-state-active:hover { - /* Overrides the color of selection used in jQuery UI */ - background: #F8981D; - border: 1px solid #F8981D; -} diff --git a/pi4micronaut-utils/src/docs/javadoc/legal/COPYRIGHT b/pi4micronaut-utils/src/docs/javadoc/legal/COPYRIGHT deleted file mode 100644 index ca74fffd..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/legal/COPYRIGHT +++ /dev/null @@ -1 +0,0 @@ -Please see ..\java.base\COPYRIGHT diff --git a/pi4micronaut-utils/src/docs/javadoc/legal/LICENSE b/pi4micronaut-utils/src/docs/javadoc/legal/LICENSE deleted file mode 100644 index 4ad9fe40..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/legal/LICENSE +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index d468b318..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/legal/jquery.md +++ /dev/null @@ -1,72 +0,0 @@ -## 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 deleted file mode 100644 index 8bda9d7a..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/legal/jqueryUI.md +++ /dev/null @@ -1,49 +0,0 @@ -## 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/member-search-index.js b/pi4micronaut-utils/src/docs/javadoc/member-search-index.js deleted file mode 100644 index 5b400ba8..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/member-search-index.js +++ /dev/null @@ -1 +0,0 @@ -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":"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":"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":"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":"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":"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 deleted file mode 100644 index 0d59754f..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/module-search-index.js +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index 68ac0fb4..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/overview-summary.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - -pi4micronaut-utils v1.0 API - - - - - - - - - - -
- -

index.html

-
- - diff --git a/pi4micronaut-utils/src/docs/javadoc/overview-tree.html b/pi4micronaut-utils/src/docs/javadoc/overview-tree.html deleted file mode 100644 index bbfb07ae..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/overview-tree.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - -Class Hierarchy (pi4micronaut-utils v1.0 API) - - - - - - - - - - - - - - -
- -
-
- -
-

Class Hierarchy

- -
-
-
-
- - diff --git a/pi4micronaut-utils/src/docs/javadoc/package-search-index.js b/pi4micronaut-utils/src/docs/javadoc/package-search-index.js deleted file mode 100644 index babb6f0a..00000000 --- a/pi4micronaut-utils/src/docs/javadoc/package-search-index.js +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index a7f591f467a1c0c949bbc510156a0c1afb860a6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 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) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    All Classes and Interfaces

    +
    +
    +
    Classes
    +
    +
    Class
    +
    Description
    + +
    +
    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) + + + + + + + + + + + + + +
    + + +
    + + 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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class Application

    +
    +
    java.lang.Object +
    com.opensourcewithslu.Application
    +
    +
    +
    +
    public class Application +extends Object
    +
    Runs the Micronaut framework in the Pi4Micronaut framework.
    +
    +
    + +
    +
    +
      + +
    • +
      +

      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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class PIRSensorHelper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.inputdevices.PIRSensorHelper
    +
    +
    +
    +
    public class PIRSensorHelper +extends Object
    +
    The PIRSensorHelper class is used to initialize a PIR motion sensor.
    +
    +
    +
      + +
    • +
      +

      Field Summary

      +
      Fields
      +
      +
      Modifier and Type
      +
      Field
      +
      Description
      +
      boolean
      + +
      +
      Shows if the PIR sensor detects movement or not.
      +
      +
      +
      +
    • + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      PIRSensorHelper(com.pi4j.io.gpio.digital.DigitalInput pirSensorOutput)
      +
      +
      PIRSensorHelper constructor
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      void
      +
      addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
      +
      +
      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.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        PIRSensorHelper

        +
        public PIRSensorHelper(com.pi4j.io.gpio.digital.DigitalInput pirSensorOutput)
        +
        PIRSensorHelper constructor
        +
        +
        Parameters:
        +
        pirSensorOutput - A Pi4J DigitalInput object.
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class PhotoResistorHelper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.inputdevices.PhotoResistorHelper
    +
    +
    +
    +
    public class PhotoResistorHelper +extends Object
    +
    The PhotoResistorHelper class is used to work with the functionalities of a Photo Resistor.
    +
    +
    +
      + +
    • +
      +

      Field Summary

      +
      Fields
      +
      +
      Modifier and Type
      +
      Field
      +
      Description
      +
      boolean
      + +
      +
      To check if it is Dark.
      +
      +
      +
      +
    • + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      PhotoResistorHelper(com.pi4j.io.gpio.digital.DigitalInput sensorInput, + com.pi4j.io.gpio.digital.DigitalOutput sensorOutput)
      +
      +
      TouchSwitchHelper constructor.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      void
      +
      addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
      +
      +
      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
      +
      setDarknessThreshold(int darknessThreshold)
      +
      +
      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.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        PhotoResistorHelper

        +
        public PhotoResistorHelper(com.pi4j.io.gpio.digital.DigitalInput sensorInput, + com.pi4j.io.gpio.digital.DigitalOutput sensorOutput)
        +
        TouchSwitchHelper constructor.
        +
        +
        Parameters:
        +
        sensorInput - - A Pi4J DigitalInput object.
        +
        sensorOutput - - A Pi4J DigitalOutput object.
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class PushButtonHelper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.inputdevices.PushButtonHelper
    +
    +
    +
    +
    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
      +
      +
      Modifier and Type
      +
      Field
      +
      Description
      + + +
      +
      Determines if the button is pressed.
      +
      +
      +
      +
    • + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      PushButtonHelper(com.pi4j.io.gpio.digital.DigitalInput buttonInput)
      +
      +
      The PushButtonHelper constructor.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      void
      +
      addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
      +
      +
      Adds an EventListener to the PushButton.
      +
      +
      void
      + +
      +
      Initializes the PushButton.
      +
      +
      void
      +
      removeEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
      +
      +
      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

        +
        public Boolean isPressed
        +
        Determines if the button is pressed.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        PushButtonHelper

        +
        public PushButtonHelper(com.pi4j.io.gpio.digital.DigitalInput buttonInput)
        +
        The PushButtonHelper constructor.
        +
        +
        Parameters:
        +
        buttonInput - A Pi4J DigitalInput Object.
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class RFidHelper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.inputdevices.RFidHelper
    +
    +
    +
    +
    public class RFidHelper +extends Object
    +
    The RFIDHelper class is for interacting with an RFID scanner.
    +
    +
    +
      + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      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

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      + + +
      +
      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

        +
        public Object 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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class RotaryEncoderHelper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.inputdevices.RotaryEncoderHelper
    +
    +
    +
    +
    public class RotaryEncoderHelper +extends Object
    +
    The RotaryEncoderHelper class initializes a rotary encoder component and returns the value of the encoder when called upon.
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      + +
      +
    • + +
    • +
      +

      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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class SlideSwitchHelper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.inputdevices.SlideSwitchHelper
    +
    +
    +
    +
    public class SlideSwitchHelper +extends Object
    +
    The SlideSwitchHelper class is used to initialize a slide switch.
    +
    +
    +
      + +
    • +
      +

      Field Summary

      +
      Fields
      +
      +
      Modifier and Type
      +
      Field
      +
      Description
      +
      boolean
      + +
      +
      Shows if the slide switch is on.
      +
      +
      +
      +
    • + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      SlideSwitchHelper(com.pi4j.io.gpio.digital.DigitalInput slideSwitchInput)
      +
      +
      SlideSwitchHelper constructor.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      void
      +
      addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
      +
      +
      Adds an EvenListener to the slide switch.
      +
      +
      void
      + +
      +
      Initializes the listener that keeps track of whether the slide switch is high/low.
      +
      +
      void
      +
      removeEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
      +
      +
      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.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        SlideSwitchHelper

        +
        public SlideSwitchHelper(com.pi4j.io.gpio.digital.DigitalInput slideSwitchInput)
        +
        SlideSwitchHelper constructor.
        +
        +
        Parameters:
        +
        slideSwitchInput - A Pi4J DigitalInput Object.
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class TouchSwitchHelper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.inputdevices.TouchSwitchHelper
    +
    +
    +
    +
    public class TouchSwitchHelper +extends Object
    +
    The TouchSwitchHelper class is used to initialize a touch switch.
    +
    +
    +
      + +
    • +
      +

      Field Summary

      +
      Fields
      +
      +
      Modifier and Type
      +
      Field
      +
      Description
      +
      boolean
      + +
      +
      Shows if the touch switch has been touched.
      +
      +
      +
      +
    • + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      TouchSwitchHelper(com.pi4j.io.gpio.digital.DigitalInput touchSwitchInput)
      +
      +
      TouchSwitchHelper constructor.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      void
      +
      addEventListener(com.pi4j.io.gpio.digital.DigitalStateChangeListener function)
      +
      +
      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.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        TouchSwitchHelper

        +
        public TouchSwitchHelper(com.pi4j.io.gpio.digital.DigitalInput touchSwitchInput)
        +
        TouchSwitchHelper constructor.
        +
        +
        Parameters:
        +
        touchSwitchInput - A Pi4J DigitalInput object.
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      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) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package com.opensourcewithslu.inputdevices

    +
    +
    +
    package com.opensourcewithslu.inputdevices
    +
    + +
    +
    +
    +
    + + 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) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package com.opensourcewithslu.inputdevices

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +
    +
    + + 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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class ActiveBuzzerHelper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.outputdevices.ActiveBuzzerHelper
    +
    +
    +
    +
    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
      +
      +
      Modifier and Type
      +
      Field
      +
      Description
      +
      protected boolean
      + +
      +
      To check if the buzzer is active or not
      +
      +
      +
      +
    • + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      ActiveBuzzerHelper(com.pi4j.io.pwm.Pwm activeBuzzer)
      +
      +
      BuzzerHelper constructor
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class LCD1602Helper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.outputdevices.LCD1602Helper
    +
    +
    +
    +
    public class LCD1602Helper +extends Object
    +
    This helper class, LCD1602Helper, is for controlling and interacting with an I2C LCD1602 display.
    +
    +
    +
      + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      LCD1602Helper(com.pi4j.io.i2c.I2CConfig i2CConfig, + com.pi4j.context.Context pi4jContext)
      +
      +
      The LCD1602Helper constructor.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      void
      + +
      +
      Clears the display of text.
      +
      +
      void
      +
      clearLine(int line)
      +
      +
      Clears the text of the specified line.
      +
      +
      void
      +
      setBackLight(boolean state)
      +
      +
      Setting the backlight state of the LCD based off the boolean input.
      +
      +
      void
      + +
      +
      Writes a String to the display.
      +
      +
      void
      +
      writeTextAtLine(String text, + int line)
      +
      +
      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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class LEDHelper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.outputdevices.LEDHelper
    +
    +
    +
    +
    public class LEDHelper +extends Object
    +
    The class LEDHelper contains methods that pertain to the control of a LED.
    +
    +
    +
      + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      LEDHelper(com.pi4j.io.gpio.digital.DigitalOutput ledOutput)
      +
      +
      LEGHelper constructor.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class RGBLEDHelper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.outputdevices.RGBLEDHelper
    +
    +
    +
    +
    public class RGBLEDHelper +extends Object
    +
    The RBGLEDHelper class handles all interactions with a RGB LED.
    +
    +
    +
      + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      + +
      +
      The RGBLEDHelper constructor.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      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
      +
      setBlue(int blue)
      +
      +
      Sets the blue value of the LED.
      +
      +
      void
      +
      setBlue(int blue, + int frequency)
      +
      +
      Sets the blue value and frequency of the LED.
      +
      +
      void
      +
      setColor(int[] colors)
      +
      +
      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
      +
      setColorHex(String hex, + int[] frequency)
      +
      +
      Setting the color of the LED using a hexadecimal value and an array of frequencies.
      +
      +
      void
      +
      setGreen(int green)
      +
      +
      Sets the green value of the LED.
      +
      +
      void
      +
      setGreen(int green, + int frequency)
      +
      +
      Sets the green value and frequency of the LED.
      +
      +
      void
      +
      setRed(int red)
      +
      +
      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
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Constructor Details

      + +
      +
    • + +
    • +
      +

      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) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package com.opensourcewithslu.outputdevices

    +
    +
    +
    package com.opensourcewithslu.outputdevices
    +
    + +
    +
    +
    +
    + + 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) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package com.opensourcewithslu.outputdevices

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +
    +
    + + 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) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package com.opensourcewithslu

    +
    +
    +
    package com.opensourcewithslu
    +
    + +
    +
    +
    +
    + + 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) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package com.opensourcewithslu

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +
    +
    + + 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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class DigitalInputConfiguration

    +
    +
    java.lang.Object +
    com.opensourcewithslu.utilities.DigitalInputConfiguration
    +
    +
    +
    +
    @Prototype +@EachProperty("pi4j.digital-input") +public class DigitalInputConfiguration +extends Object
    +
    This class handles the configuration of a digital input component.
    +
    +
    +
      + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      + +
      +
      Constructor for the DigitalInputConfiguration.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      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
      +
      setAddress(int address)
      +
      +
      Sets the pin address.
      +
      +
      void
      +
      setDebounce(Long debounce)
      +
      +
      Sets the debounce of the component.
      +
      +
      void
      + +
      +
      Sets the name of the component.
      +
      +
      void
      +
      setProvider(String provider)
      +
      +
      Sets the provider.
      +
      +
      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

        +
        public String getId()
        +
        Gets the id of the component.
        +
        +
        Returns:
        +
        The id of the component.
        +
        +
        +
      • +
      • +
        +

        getName

        +
        public String 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

        +
        public String 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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class DigitalOutputConfiguration

    +
    +
    java.lang.Object +
    com.opensourcewithslu.utilities.DigitalOutputConfiguration
    +
    +
    +
    +
    @Prototype +@EachProperty("pi4j.digital-output") +public class DigitalOutputConfiguration +extends Object
    +
    This class handles the configuration of a digital output component.
    +
    +
    +
      + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      + +
      +
      The DigitalOutputConfiguration constructor.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      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
      +
      setAddress(int address)
      +
      +
      Sets the pin address.
      +
      +
      void
      +
      setInitial(com.pi4j.io.gpio.digital.DigitalState initial)
      +
      +
      Sets the initial state for the component.
      +
      +
      void
      + +
      +
      Sets the name of the component.
      +
      +
      void
      +
      setProvider(String provider)
      +
      +
      Sets the provider.
      +
      +
      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

        +
        public String getId()
        +
        Gets the id of the component.
        +
        +
        Returns:
        +
        The id of the component.
        +
        +
        +
      • +
      • +
        +

        getName

        +
        public String 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

        +
        public String 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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class DigitalInputMultiPinConfiguration

    +
    +
    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 Details

      +
        +
      • +
        +

        DigitalInputMultiPinConfiguration

        +
        public DigitalInputMultiPinConfiguration(@Parameter + String id)
        +
        The DigitalInputMultiPinConfiguration constructor.
        +
        +
        Parameters:
        +
        id - The configuration id as defined in the application.yml
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        getId

        +
        public String getId()
        +
        Gets the id of the component.
        +
        +
        Returns:
        +
        The id of the component.
        +
        +
        +
      • +
      • +
        +

        getName

        +
        public String 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

        +
        public String 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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class PwmMultiPinConfiguration

    +
    +
    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 Details

      +
        +
      • +
        +

        PwmMultiPinConfiguration

        +
        public PwmMultiPinConfiguration(@Parameter + String id)
        +
        The PwmMultiPinConfiguration constructor.
        +
        +
        Parameters:
        +
        id - The configuration id as defined in the application.yml
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        getId

        +
        public String getId()
        +
        Gets the id of the component.
        +
        +
        Returns:
        +
        The id of the component.
        +
        +
        +
      • +
      • +
        +

        getName

        +
        public String 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

        +
        public String 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) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package com.opensourcewithslu.utilities.MultiPinConfigs

    +
    +
    +
    package com.opensourcewithslu.utilities.MultiPinConfigs
    +
    + +
    +
    +
    +
    + + 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) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package com.opensourcewithslu.utilities.MultiPinConfigs

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +
    +
    + + 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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class MultipinConfiguration

    +
    +
    java.lang.Object +
    com.opensourcewithslu.utilities.MultipinConfiguration
    +
    +
    +
    +
    @Prototype +public class MultipinConfiguration +extends Object
    +
    Class for configuring multipin components.
    +
    +
    + +
    +
    +
      + +
    • +
      +

      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

        +
        public String 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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class Pi4JFactory

    +
    +
    java.lang.Object +
    com.opensourcewithslu.utilities.Pi4JFactory
    +
    +
    +
    +
    @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
      +
      +
      Constructor
      +
      Description
      + +
       
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      com.pi4j.io.gpio.digital.DigitalInput
      +
      createDigitalInput(DigitalInputConfiguration config, + com.pi4j.context.Context pi4jContext)
      +
      +
      Creates a DigitalInput object for digital input components.
      +
      +
      com.pi4j.io.gpio.digital.DigitalOutput
      +
      createDigitalOutput(DigitalOutputConfiguration config, + com.pi4j.context.Context pi4jContext)
      +
      +
      Creates a DigitalOutput object for digital output components.
      +
      +
      com.pi4j.io.i2c.I2CConfig
      +
      createI2C(i2cConfiguration config, + com.pi4j.context.Context pi4jContext)
      +
      +
      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
      +
      createPwm(PwmConfiguration config, + com.pi4j.context.Context pi4jContext)
      +
      +
      Creates a PWM object for components that are pwm.
      +
      +
      com.pi4j.io.spi.SpiConfig
      +
      createSpi(SpiConfiguration config, + com.pi4j.context.Context pi4jContext)
      +
      +
      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

        +
        @Singleton +@EachBean(DigitalOutputConfiguration.class) +public com.pi4j.io.gpio.digital.DigitalOutput createDigitalOutput(DigitalOutputConfiguration config, + com.pi4j.context.Context pi4jContext)
        +
        Creates a DigitalOutput object for digital output components.
        +
        +
        Parameters:
        +
        config - DigitalOutputConfiguration Object.
        +
        pi4jContext - The Pi4J Context.
        +
        Returns:
        +
        A DigitalOutput Object.
        +
        +
        +
      • +
      • +
        +

        createDigitalInput

        +
        @Singleton +@EachBean(DigitalInputConfiguration.class) +public com.pi4j.io.gpio.digital.DigitalInput createDigitalInput(DigitalInputConfiguration config, + com.pi4j.context.Context pi4jContext)
        +
        Creates a DigitalInput object for digital input components.
        +
        +
        Parameters:
        +
        config - DigitalInputConfiguration Object.
        +
        pi4jContext - The Pi4J Context.
        +
        Returns:
        +
        A DigitalInput Object.
        +
        +
        +
      • +
      • +
        +

        createPwm

        +
        @Singleton +@EachBean(PwmConfiguration.class) +public com.pi4j.io.pwm.Pwm createPwm(PwmConfiguration config, + com.pi4j.context.Context pi4jContext)
        +
        Creates a PWM object for components that are pwm.
        +
        +
        Parameters:
        +
        config - PwmConfiguration Object.
        +
        pi4jContext - The Pi4J Context.
        +
        Returns:
        +
        A PWM Object.
        +
        +
        +
      • +
      • +
        +

        createSpi

        +
        @Singleton +@EachBean(SpiConfiguration.class) +public com.pi4j.io.spi.SpiConfig createSpi(SpiConfiguration config, + com.pi4j.context.Context pi4jContext)
        +
        Creates an SpiConfigBuilder object for components that are SPI.
        +
        +
        Parameters:
        +
        config - SpiConfiguration Object.
        +
        pi4jContext - The Pi4J Context.
        +
        Returns:
        +
        A SpiConfigBuilder Object.
        +
        +
        +
      • +
      • +
        +

        createI2C

        +
        @Singleton +@EachBean(i2cConfiguration.class) +public com.pi4j.io.i2c.I2CConfig createI2C(i2cConfiguration config, + com.pi4j.context.Context pi4jContext)
        +
        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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class Pi4JMultipinFactory

    +
    +
    java.lang.Object +
    com.opensourcewithslu.utilities.Pi4JMultipinFactory
    +
    +
    +
    +
    @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.
    +
    +
    + +
    +
    + +
    + +
    +
    +
    + + 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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class PwmConfiguration

    +
    +
    java.lang.Object +
    com.opensourcewithslu.utilities.PwmConfiguration
    +
    +
    +
    +
    @Prototype +@EachProperty("pi4j.pwm") +public class PwmConfiguration +extends Object
    +
    The PwmConfiguration class handles the configuration of a pwm component.
    +
    +
    +
      + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      + +
      +
      PwmConfiguration constructor.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      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
      +
      setAddress(int address)
      +
      +
      Sets a new pin address for the component.
      +
      +
      void
      +
      setInital(int inital)
      +
      +
      Sets the initial state that the component will be in when first initialized.
      +
      +
      void
      + +
      +
      Sets the name of the component.
      +
      +
      void
      +
      setProvider(String provider)
      +
      +
      Sets the provider of the component.
      +
      +
      void
      +
      setPwmType(String pwmType)
      +
      +
      Sets the pwm type.
      +
      +
      void
      +
      setShutdown(int 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

      +
        +
      • +
        +

        PwmConfiguration

        +
        public PwmConfiguration(@Parameter + String id)
        +
        PwmConfiguration constructor.
        +
        +
        Parameters:
        +
        id - The configuration id as defined in the application.yml
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        getId

        +
        public String getId()
        +
        Gets the id of the component.
        +
        +
        Returns:
        +
        The id of the component.
        +
        +
        +
      • +
      • +
        +

        getName

        +
        public String 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

        +
        public String 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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class SpiConfiguration

    +
    +
    java.lang.Object +
    com.opensourcewithslu.utilities.SpiConfiguration
    +
    +
    +
    +
    @Prototype +@EachProperty("pi4j.spi") +public class SpiConfiguration +extends Object
    +
    This class handles the configuration of a SPI component.
    +
    +
    +
      + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      + +
      +
      The SpiConfiguration constructor.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      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
      +
      setBaud(int baud)
      +
      +
      Sets the baud rate for the component.
      +
      +
      void
      +
      setChannel(int channel)
      +
      +
      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

        +
        public String getId()
        +
        Gets the id of the component.
        +
        +
        Returns:
        +
        The id of the component.
        +
        +
        +
      • +
      • +
        +

        getName

        +
        public String 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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class i2cConfiguration

    +
    +
    java.lang.Object +
    com.opensourcewithslu.utilities.i2cConfiguration
    +
    +
    +
    +
    @Prototype +@EachProperty("pi4j.i2c") +public class i2cConfiguration +extends Object
    +
    This class handles the configuration of an I2C components.
    +
    +
    + +
    +
    +
      + +
    • +
      +

      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

        +
        public String getId()
        +
        Gets the id of the component.
        +
        +
        Returns:
        +
        The id of the component.
        +
        +
        +
      • +
      • +
        +

        getName

        +
        public String 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) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package com.opensourcewithslu.utilities

    +
    +
    +
    package com.opensourcewithslu.utilities
    +
    + +
    +
    +
    +
    + + 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) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package com.opensourcewithslu.utilities

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +
    +
    + + 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) + + + + + + + + + + + + + +
    + +
    +
    +

    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 + +
    +
    +
    +

    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.

    +
    +
    +

    Index

    +

    The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

    +
    +
    +
    +This help file applies to API documentation generated by the standard doclet.
    +
    +
    + + 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) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Index

    +
    +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) + + + + + + + + + + + + + +
    + + +
    + + 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 + + + + + + + + + + +
    + +

    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) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For All Packages

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +
    +
    + + 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 { + $("" + categories[key] + + " (" + count + ")").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"; + } + $("
      " + col1 + "
      ").appendTo(table); + if (category !== "modules") { + $("
      " + col2 + "
      ").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) + + + + + + + + + + + + + +
      + +
      +
      +

      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 +

      + +

      +
      +

      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(""); + }, + _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(" " + messages.linkIcon +""); + } + }); + $(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

      Constructor
      Description
      -
       
      +
      +
      This is the default constructor for the Application class.
      +
    • @@ -122,7 +124,7 @@

      Method Summary

      static void
      main(String[] args)
      -
      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) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class PassiveBuzzerHelper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.outputdevices.PassiveBuzzerHelper
    +
    +
    +
    +
    public class PassiveBuzzerHelper +extends Object
    +
    The PassiveBuzzerHelper class contains methods that pertain to the control of the passive buzzer.
    +
    +
    +
      + +
    • +
      +

      Field Summary

      +
      Fields
      +
      +
      Modifier and Type
      +
      Field
      +
      Description
      +
      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
      +
      +
      Constructor
      +
      Description
      +
      PassiveBuzzerHelper(com.pi4j.io.pwm.Pwm passiveBuzzer)
      +
      +
      The PassiveBuzzerHelper constructor.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      void
      + +
      +
      Logs the passiveBuzzerFreq to the console
      +
      +
      void
      + +
      +
      Disables the passive buzzer.
      +
      +
      void
      +
      passiveBuzzerOn(int passBuzzDC, + int passiveBuzzerFreq)
      +
      +
      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
      +
      setFrequencies(File frequenciesFile)
      +
      +
      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

Constructor
Description
-
 
+
+
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

Constructor
Description
-
 
+
+
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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�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≻8^@jZ|vtq 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±d)h_zvJ{(0m@N^45iSEBmyrl$k_IqYQ6L!5 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 ~|*0D$-L_R=yep%9zc2#V8 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 OQc_G#wB)OS|Nj6+6$PUJ literal 0 HcmV?d00001 diff --git a/pi4micronaut-utils/src/docs/asciidoc/img/Copying_Jar_File_To_Pi.png b/pi4micronaut-utils/src/docs/asciidoc/img/Copying_Jar_File_To_Pi.png new file mode 100644 index 0000000000000000000000000000000000000000..e75d1d6438488400f679b45f84260af4dcb6415e GIT binary patch literal 58858 zcmd>mWmH_t)@=wDg1b9};1D!ua0nLMg1fuZxLe~8G(do0!QFxr+?_@`xNFl$^El_b z=bm%#_kO*sxMw3bH8{2_wp6e z^N|d~O}pn0I9F8}@fSbF$@ZVWAXthiioJMI14Ml=MtuH`;v}o%`r-vf_a8rS&55?h zFJ5d1$VrN+dl?+9AsgXoz>v>Q&1RSrK)A0$LE`9GncVw|N74G@H-uQe!lWgON*~}3 z_e(9|#iS7TJ3Mg&N>kjX>n`*71m$?CLvs|Vx9?l@z5uws04_mUwU;Xp>4VAAae`{vF1G@L)Ja8XFuW zG@{6WQ7>6vnSVqc9T7fLF_uN%>GCExnZ=e-QZc042%eOb;^Oa^em6e9zV6p^>?rK) zb5o;p-4~%o zgcV!>h&daYkx!(VQ}mY@5Q!O#@Pcy|-TH;OKvNYj(o{S&-f4xq5#Nr=;KbXZEnm5Q zB;1R&yc!w9phP>jSUudvtB}b}jLV=jVBfS>QG|v4?=}}uC>=L2#P@vVC!1JQ0KaSpmB&nJvPf_0puGV)aah$WKc!Vhv;IXM+WlU7EP4|Pl} zZRf{=muDyKP4b5Fm^a5On8r` zcmMp$oGneld)xV^Qg+TYJkGB=h`%xd*UGiP>~#yU6q=dQSz7H5o7AOtMSlO%ix>HE zg$%kLClMJUIa9+cDB&M-4flVOMvdpReN~G@Hp{ZGTC>Fp2a?5qr&<}=mH+W-f0i%= z=|&e@_mS^ zdFivax`|F>n587&6*)gqNI@HI&rFJ;P5aR?ITjWcLTR*dNWV}`tajRPU0vNmF^lEc z`ai~nhrlnqSP4M!gfW5P9MpaYui$gSho^}>n`rOHxskh+!P&~Xie9{J_8#;6u&et4 z*fj{dsx5E?EYP%bF~0aBsA=N3VT5+Zhsc59=f;)$KwoGFyV+jc@+A+C;4i!Ezl#rm zu;kv&5OU=Pyb1{>pEF8gAp~!AK5bP7_{YJwn0vG60NXv`9K7xbf7?LW^`Fux&pj`V ziDm}yk?ai&9;E$l<^{F=S+oF#JuTN>LU*@gd$_+V_# zO(}1bl$ba@B(HGZm#DKg*eK=0bNGBBtbYxOxGa(+1Fl8QG4s-Pe!sBye7z4mMD~sG1UJUxjlIKu0**N?(4$Ji*)snS!~xqP#; zDGCt@bxgMX(caMxm~7C)q@&C3-we5Ln7vqb-wXZu)97fa1DXuvbW>zDNTvyMUO*unmUep0 z)RctdWZn6uazkt$ADl*Wyv~;xU-fL)m_aCLC)XzeS7T84vr?jk3V9{KAXl_-M3O`t z!kF7p8rdXTT}8m_)2@qGNR0ct@#Nj-m)^sf_8Uu30wE6>!bQz#wabsI_X<7Dyf;Jq z<-Z|TFW<$O@grUL0_q$k^y+dmRnPDqF0Xy3*cb76rOof-j|V$xqlSW*d%{Jc(@*x* zt(9ksKcu0*BIQIr?GQ%xR5$|8kC9JRtbI`E+|_Bn1Sz2XI6G6V@f&ild!Bp@&bzlT zt9=K|^sgsG-V3hU)f>)N=Wm&1mTKTnZWkiFj`K-5zq-3F;t}+6HWR)Py%2!$xKar* zTdVOXBD_^51FFHN*{^ucs*Xf*bDs8{n_j=k&@nt(sw3UEw$2dtjVJluPV$U)&4;*K zy?^jQaU|TB?iP+Pd6P`b%l8rIW67SzcOgJ<)Zj_CK9Hqv+>Q7qk#DnmN@RK3-0VHR zo`~P8rZsJlwtJ6$Pfr=c#wb*do5siw0&GlFHvBJr9iJW+*yglN*iDByO5 zafWcg6x1=}v}>xoRr&>DG7c%BmP11L%tyAS7{m9Tw>$ZKF$8{62u9fcZMI(+$mISG zKym^A(6ilQbW30Y!<)RT`J8BAr<5U+G@FDE&-vYH{b{TRj0p+~XzxO7@s~JX1i%}W zuu}5-2n;ki|12$<*!;1NX*%wzY&s9{+}vJQ+aSNBa@aTElYm7B?)*v~#KOZ1ZafyS zD*aR6?6_}DC^*;y0Tem%xSeVzZ^9L+)I~_%!QARDzx9-G0Vy; zcG!HXqsw4S!w;Z^rTv|pGAT$&Nv~o~O8&@AW@qQuzA9M`XRj|VH#a`DO&p;f2;y^Y z-h7zm^}B~~5-}4CXrz&I9(67eVHt&h*G0ktDqE;1n7)rQ4@dTMMu-rtERp7hIp6xP z$qfw)O*nu#YI8`PEEo-Z9m!RhE1KM3OXeAEMyS)N(4_1bgp%=$>0ZpCrO*kGZX7}) z8?kc@2N7+ARL?Ic4#v}|WAGYGqx-#*52uPPiK?-#(IdOe{f?* z7Y6+nrc;_gGq80Mv9nRc2O8{AhQ*v3Py|`nRI5Ti&zOG5%Ak_0cY{-M_<1m+n5i^Z4MOmVr@p4p-6QS%y_ zq2=>xl7Abfq5eBja`hw!#)RxP<(;U9E$K{Q!`-+6Y0*UbPg6ud%HYY){T z4d9zG0g0UPDe5St*+Lkjq`~HgRYxirjoq~8Jq5}fo;x`i{O^!d$n~g)2FY*2phJ!Y z6XV<{!Ch6VvAb$c2J(yy&}@=~8+0_z4jGP@4+fag{jVTrs)}6kMm~p~`J* zpxM03ko)^F@QLH3?N;km08#sY<_2dZOPp96OhwA3mt?DL$oDtLtN`-#$Ekr4r2P`y zgd%kMhJc=cW311&@38HS0)S}<- z-eB86>E2{>(noG5rv!-W7IsuJ_Gfq4qIxwth2< zpz=6t(j$12vq^IJ&1tHTdLD_Sch$zn26$dqgY|Ox92s*}cI!B53^KjYY2Jz@GoP(e zFQuL3Ip0qk6d~4Xy~ehk?F+I(O}D6iH$D7b<%}NHDmU8i8Ax?3#-!77CT%4Rz2=Nt zn(XFCHaD>&fubR_5hHiRG1iH1b{f=|k#vgbzW*|M^EY`+ZQF2v-9I>pRwojaHuja-f1uN?g#^W_wWS3dPU_It?tQwsljZna%IJQJ@>Wcw zGdEdVdHR_gGr#GjOR=#?W-vxZO-(7+mTnB1Vc%@(3tviBNirjQy3rVYbYMujG+TVT zvU3PVTB!ivf|Iu+XVPqA+XW1Pa>;M>Z!-C7M0@HFQhq1j-u)Up?>;cQ#cU_W6gfw; z00rRQ@e0PQgM9EN*y8wDzbF32EgJEKv=KjLT;fr*xsnyEDuE%8+`$!Fw#>BTi)!!9 z@>?@kl3*mIen4H`AQ#tZFUM(!_ATgRMp_x*3o$Xjn~`Br_b84@uC_Fb{NK}2a{lta zYS*~~2Ym_(3L;@2v~aW*jOS*ftE3cvSM^-R+&TLDi)dECP?}ZAc`5oB# zP8=gvtJJfmUD=9b)m6=j_r3lxqF&-&2P@qyE> zr*Ki2c4;T2h#!J_GW5Ca#<8KPh@wDi_h(SZ+|S~Y zl9EgdZj$r!g0RJAff&ZmBDX0uHU7gIeac6wVPKphHUD7{XFHp9IdL-dw*~S&iHK;6$V^Mk344M;n6pIapLL(`Oo+C9ei6MVxms4$o>&ui2xOg%mP|I*n=2=(E{a0=4RM}GzpaaoW( zm$7r)I=m($X{_3fSC-e0&F8q2CCZetNsI~JupVy~!%nor`5zj-p7Tim-Bo%y5_g-& zel&%!kMT&FBEQpFV495y2hn8J(~DSAL5j}KPMb`YEKLTvq&vrtA77_E*5Z-!RmeCy z*JNrIm`23!%`lJ%df4^mcKFt-A98;EM~aq|oNfNh^A&mv=9;S1OA!DZEpoEx-{IaI zEmd~1Q~Ma-#KjMUI^%9oVtp;9r+>4xYc6VfS*&Pts_3fU=Fxk5j{6+U{Lb|bUxuAA zU%i|k82`81mynQf9${_D*KfPgeeHB`#rS*;E{~H%gJoJZtchPoi#3G;fQ_GU*U(IQ zN#NLb3SmzF2ZYeDaO={ao4pZdb6SR5SNk)%(bxYAqAdR57SE-=P1W#tj-V~$2S4%l zyHSPnqtWON4*5t>)|O7@)|X7NATeF0YR7evh9*n9BNf)7yZ_x0hE>`tOvk8m+&463 zZPrA()Qs;@{+PFMqx74gZ>8xuNVItzH{fl|?yG6HURfTk){xiQEk!mY(NUMl zD92KY!Wriq>oPgro>BW<&!zJN?&{M_g#U!mcj{+Fn}qb=kox{c=K*bu*Pdq1AT>wO zb6z#@Hq?tn?~bd{Zt0~CuTAN;ToU@-)qaRGn1SkT^^wI|C*Xb-lv`6H(~xpt`X^D6 z&>(S_))@brG;NalpQq~PCM&0ZkEEnKAG!oH9X*3FlzpVy8H|KSNLX%-6!Hf*4`$SW zH%@n}icthTkNc+c0(yQWGt{SK_6EMuFndLW(RP+)1STnKXMT#+Dw~Mqu*j3%{Pk48 ze~!r-7y14Czn^6P54>TZbU)9o$wEu^#l?)5QoHQggH`|c8k=^a$!`PU|4uJua+=Q= zyhTPZdRRo+BPG`-S!AJp`6Y|bzGvFdUs~0qAWhfzkKP))agEktoX6xm>hGD6t<@wY zhTduCDT|KMtD72%#gLH9SJ=k)#y;3^&c|8J-8x_DrRaF`#U z6HWb+kf(NK$t$bzBjKB8$5t7;+~aV2rl)5b5XDzoExlp+}bgMZ|JH4Vv1NZO#K0LpKvMq#`dTLq}^SYb6oSC)X zP4gqjCZ!d8BSuXO*r&lU@!YJ+^Y5DveQ6&b#Ue<U4fYZKnqn zPCFHfps91$kw~-OSa79z1Kf+_?KW`Y#iPFOVI%{!zg%Zu58*bwo<9}Za30M9Auid1 zepXCiGB)^cU;nCf>|Rkuk9aKh_A)y+V4eFmB7Au+>jnq&c~p7e`{CnVrhJv6te?1z zkpb(*B?@fty5FSdcMB6rt+zZSzjS_jsMNI?o1XJ$Ix?)SdFB1yTK0V-A*t3wq{d+F z+|}KXY2S?3?m*+RAg+#5Wz%uTLM(lA*C1kr*Cxt?*ZkcBPwHJmIL~ejj>}Ju(aiVw zl~@s!pv)KzIjt&M=O6nXPo!SWKxUK_$jTfF~e>J`vS&(qNgtucG59J#0(ZTR=p znC0ePqR8yuy)j*DxC-&;J6k8KUkj9WG{7* zx5a0N=vz_70`{bY1ZI`>rhWV+EVjN7gR$^!fR_=TM)xPQvaVKPBDgTj36V)ciaD~^ z7t?9(i|MG`r^F#_9=bHCCQ$XU%nQb)u6f7R=-zY0vjZVKK2a#m$-zz;tIE^wyfrl+ z1*|H7Tq<%INmj9H*PQV_v?n{|mI0LOO=&Uuklx=dQKG~LP6LgpxOpIoJT>@n)TMBu z$nCC8m1Z&W7a)Bq5a@+op=7J5F`wM5mxA;~&+b&@Wm1R+$ z{KXTJiu_-#g*q_u0C!RQ4PI~{UvB~f*a_AJSr4br@~7r>1ne9idt#tjM`qobcy;fgOp+gvnH5Nr1y06-2SZdix4L^uc z^3{9yZD`Cy>N0IvjG)qqXsjOwjbYUgIfKyv`Xly10sW_(7R^D|5(>_};#tpuarZ^@ zn?%K%hrg&tJ>*|YY;*%L|4v>FMBojP06z{})Jlz?Z*baMfu5lup|qF{Yyj3O4f0^R zqfF8sIqoDWZn$)h$Hddwc{rWD_0J4SwjHj}|#G#c`W`2atMgxK43WGjiS? z-8{W%OK(b&M80flWGjmIrlLDdEq(pL<=BTb*ZmEf`QE&X$WC}fRrt4j7e^C7!K(*4`K}_hKrG z(*4zXlZA0C)3kn*OdOZ6n0oiP{PIl6NdRy<(5oub(IFzioLUZB&SciH(du6qF z`UoE}J>pnM#(`4R388a1&~S;L<%PdZ6!?{oKq1zTsqule~uSs{OG-O(@#s; z5q&=xwzXQNhgD@)LgoPv%7DDp&3!~{OIgz(4?bOE;AG{1mTjv|r7rtQ5$qb$k_t^Z z_i?ZK-&Zyp52Js)r;Oe+Am5BI%jQpw7FYiaLhdLL4n$6UG++LG$oaMmpNySMT653o z>eZ0cYNn_&f8CLzP2HoOR#)2b>2n5)su~?Ug5%}iWoQUJEV%SDCW*dc6>^clzqh0Bs|MQ_kM*$Td`@`SMb>WKeEIw1 z#qpXuUO{hk^<|U9S=|0hutCuYyfiqzn|JX6%!q)#_iA^Bw8rJs+uhstLhT*G9l58{ z;MhliA_*7TDwi-4)(F-}~*Ru&08Mj(RinYOHVL1N_b7aX7ifAg+G>V?U=qD(~;>K4C73zGFV+ z{zYoQWUDuU5?MTZI;HS7yLMXu3IXMWJB8!euUcj#kRNiZcZu;@y5ZJ`upti)3J0g7riPnn&&>&@Q0bi_iQY?S-k;G`;6S;?u z@1=5eQ$*#3va^S#^@~!;gVQS00eHyfS{HKwn|>DP5o>Gb1@Z!iB*dYxNK+|ZFJ??G zP`}N8@3fSD{)Ns>&m^&{(@Fw{RjwzJZ_|(d@JioA?Y$TWQ;MD=U!UH&iq$@|jqeO+ zqws}Ob8T3b5Xau}5X(=$NyDZv+atde22+1wH5`D`cgPA7V}0jz^pk>2E^QP4J(j1C z0C^7i=t32{DE(DB&>T8d^cE$e(Y|}WGAnffj*gJ&xSE4FVisavC6S7*u`BYzbA63) zoG{*G9j5ly2~%da`AY^*B|6&j%|}&|#v`HPdV52+W8&iCFQ|KS=&<2cupl38hqzva z!+qj6@y`lls>Po-4~#$Jn(2ry-ZF6R{@C0*Qj5KXU#W3jx5o4G?5=Lh>peQpFFF>B zSMKrV?_HTt1OUGpAy6T=xKITLE66p%I?p6uCxMw~gAlh((S@OeW=rG%N-wx4&t9r} zH-$kIb0|5o5;#eZE_@ZnlG|ECZa2c}7&Am_x!JjyvuWy!QR90bUp+Afq z9olO9w5{LbU%9xxc5ftmuh5sP5TW-QVO8W(^U9MytT#&P?1Y2DGmcqsexLP;MC;ry zC?;~PzR^wl*O;@luFssEp3=av$?e5u`8gD`Mhm59xyQ*v@TM4ApawCLly(oh|B|zq zW{vD?ANB6;f;O7TsL$@1frScsj+{65*p3!GU+Row6LHvM5-dGpvzG7<))${HA z%Wu-ENi;bdX}}m%7@l7T|H?#}6AYIVylJc_>TpJ806~tY zE1_nEV!?DhW#ucg>FA9fi@^y+ntOtuVqmif3l4j8c$>KAvy&YN*Xvr}d?}zS+|mGwG5DJ97M(aQ*J46SVXd8f zFm>l}y@BxM$lBtSbd>}3a3ANCM-|Vy}$ujrnDkcFF zGyr!(=$_NVQt<2cb@EinH(|O#+7_&{8x-~RWn|=T=4%9{Z@#oti|VDF{+%4Z88+;o z<01s!fHj)idGd!QP6~h8fiv;#> zv6b4lzq!18J8NN{h66K>gFUqENwEt$_f?Wb*S7tz6F(AW!vIWF(8G)JBzgn^^1*@@ z%B}S(K$P&u8HmkN>rqRO&q!DJ=Y2nFxnGM{ic8f=>&F$7Sj^Nb2&NA?g;-SjKQkw~ zq&}-?bSrcdAY~OUHn5Y6M7Xz+MRZnCeYB zW{p+1;O%a9`uXKAzh=+O&_hA>G*MJw#54B$|HMA>Gxn3z1ApsxZ4?q(Zb30&5v+{y zJfw^DBfV?5Y~4KTh^PivgKMW=n_*CqX4`ntwCrlJI;GO)j*!NR4L1}|G`1J-R?i=j z;k>RS*oE$Yh&uR1CzCM2l*j%y{=^Ix-=?odncjUQ|vAto} zzoKwtenmzUmzETZn>9~UGfYXZJ+OS-(ELy-WcZhhNS|4e_p3E7Nr+&{y1CEVB^3qW zgjGniL6{6x3B2%BDPHWs^)cz9+Voe}?Zmufvl~UkKCmmgX*VEH%VIsGMmTuG3q7DC z*Y{Rt6mXz2>UV(t;C6dKr6sjH?&~=yKzqDzZ)-of3!s%NyubP-BQc{9DbqI_(Q zkAwGOe-)0blZu+^t)zb6`U0}7(odah{V&7Amc3IShh^A>p<1%uZD(VveCP99bF!SI z!^%uT!Ob%tHW$ye zB$VP&*S^aqus23}=aL#gPWI{Un{v*!Bdh!bp-+?v28k=5Gy-Wt>p7}lz~rp7`Fj$e z-^Kg1b|LJ}^tmu}w2yO?%Pq)X^4F$1pw>srNd(0Ea%mF&BPY0l`gGiFa)ef>410S-9P6#V6y};K(l0`ps zT-vgls<7XM9lC}Nw*s9`+N68DV=zN4{7exH_g0XAd)= z@V{&(d%ADi;OF~@`~;}qSR~w$Og14e-;p?bKu)zUmdmw$3jCB2OF1Y40jEFB0)bY9}l!JUvpudoSZqMP_^GfwJ(BhNT#H7;M0ds(rIzO;LGUAEBAc)ZT4+9 zYi(d5i_*1qc(CVTHnAX<+bj!Fqc34dXUXOY8KY>5GBG!bRnXK}@q>Cly$-z@n%jGuy8Afbo)ZMxTh<-&!@nhdX*H7}O*S!ce{>vVv;SoW`w{krbh3ht zkpV;Wp%oRH#J=o#GoyOg)uVq{O-t^yj}v0RGwCXq>il9v)E}39^Z}Wo{Yh-p=Z3z$ z&Wbpm0Ezl8UJv`YjFlnsMdroCIVA-DPe~nH3N-E}WEo z?GH1%?(sz$s%lc7JEqeth;%v!ij=cp^)-{Qe3^y_J)iej(?akCry&(1BcfCz=nNHA z%&6{CRwxU26l!M1izzAl;e}teYeM#?h~CHj(SX~pn~`ow*j-yZLXd&38f{hj@@W~)b2ccKk9uWVJB-t)Lo^kBC~CHm|Zy4RgRj_iGS#k ziaxhWr4IHJ`%9=^AewBCt}d+t7fMlryG7E0Y78fJQF@8-@g@oHnDOyGpqW`Xxwjp8 zXR}I+gh5e72TVh3PvVn8d$pMd80t?0{U3$u)w!V1x1V6nZq6ayETRR-!R6&dD^)KL zEpn2~1hwkVZp67PEB&Hf5;C30?)d<~CwoL)}(KCc5D6!{jbCpKq6N2bwwK9givRf5}#KTXyTGjz2V6QKyac)JT*Jqhm9Uj1P;b{QA^COc}GY z`CAo6M4JY2s`{Pb7PtJAdf4Ov@$A?(q?AjdeJOY?u`aSx)p*uU(9wROFc?6{=P8Rn zF7rc$Z?k65(%1%K^DteQb|?>lX^ae7F3qFnRCSR~jON4)I+DG5$_D6CT>>8JSv&89 zp%-)wLc*)D+v5x3b>H3EFK^!q&8}5g+BC-1MliYWtNQCam-epar{5-B8P zHxdyH<9G|c)uUie2T9LGTFMe-b<@a^6gB>2blJ+g&DP0U(jT?@{75oQ;UR!GI7(mE z;aI?n4mcJaH*6pu0LGifx(Bg9h6M-lV7r*1y`ZxSry10!60AIABAR>S1ZADe>gzU) zN1D`!?VN#9Nmi9tBq8q|JL488_AnP*_~`Vp_t+gi5%yY%Ot07UMzX$W_W??tT3GO9 zAB%IGmtvm5khwUAI>d9YCbRNBs_TgO(D!YIeqV2d=VY2yl1Dh|9WeT!XMWEGcA9M$ zk~bFz#HJS_3-w7H+i1@>9!F{nQ`ehPN;Uxl)%_4w8Z|-VOtr;+pO=;U&pbZ*wt8XR zk2XQHS>la;W@W&(R8x%6)RInXzCMj5$i*lQ9o`!aa2bBT-Q^H@G+lg!)OkDD(CdZvN^3oh zu*xn=RXP6Hr?5>2t4G9--zP#t^=9GwqhX7`t#`n}ivPivju=bzWmosR9Mqb@p4uuE z%PpsOTJJ%gWYH>O=7Y>jyhICe6v0a55*rzMaj(=^7t&82%Nv0c`XyVGYInVm>D)|o zvowBipo9&;d^7E9ZQwV%EMTeW^i-P~#pjDrw#%(!r;kfdIm`MzMs?sQ2`^r0bxje? zq~1bKmi7vxXJ`1{jAn~8qmpcW5}|`{1}Dx`haB^ zn99QTM8f~?1UW|^0<2n(S#}H2N^tDH92HtN-P@3DrgIp)IMxdA(s16=`Q5Z1a$?{5 zb^U8@q}?16xer>;B56s1av(fgzkiI>I)zkYYS(bO6GjxYa;ij+P5=TFE74?~YScsf z(PjM32TGFA2}Wgs(o#TES6>_pK~-WMb}<;VC_{e+@iI7BEtiyCLQq|W-^NPmBOHjhzaP$|x*vB%0JtzrY(+{LRhI<3kpy7VDL zvAMj&9q{A{joYMtb@aqxMJtD)ydlyB`gNC!O(yV4`1%GI+k0cm=4DKjIZ*8DEUJU1 za@DS>#}xNQ@dywtr@4zL0@1q~$RV)iA$HGHO@%l5@t#`O8Z%MFep1ysV9obR5=fz9 zo!d!ZF6Weu@7|>C z+c#?*IFwpX&SUmbJdtv%>d=V=2S8*^2XTsBwix$i>Tx_ONSJM{?l8oRXh zM4~HRvR@sn6JQ^=QM0@yI~MSiSa8_dj*49yOk@+0u!M0XqfWYfz|(Cwj`7#0nXJ|4 zlf-O;n+ac`g?&SQXurT}8mLe}#Z5Q>AwMol(J&PwFNZcs?{*e)m{$-^Pw<8`St>!d zZQC9Xe;5kix1lbh6UWQmCofjJu&ZtcM#2?NVc(yxgqyw%By5e16!Y4|uDH9eF6FBM z-4v#eUxtwhylPS=2|lqA+z%hO*QH*ZK|w;syp?gAT2{t-4W#IYG6BiE_qg(rAKr~M zYHa?g+{W^EI?!VjYuw)NWDQ$5mpSxEMT8%;A+BCqEbr7|wV+7JCM zDy^6m+&K(ob6wZcz8GQrot9QI4z2^;O}9K9taaHu-X3kd+CNji-5U{grs71E(z1@= zEo^TneK)XPMkL<0sL6OK9=qp*GR4`lw^H_@^w4gVmld7%WvuM_ZkSfu5^dXWSJY#t zabcMjhoNpNbLfvv#68NKAYyQ|^QHplOCj_{NE4|?#_6Sx)%CU;4Ymg@1I-(8Yf+UD zPUmH-w-J=tdL0OcN3Ab(Mu4D;s&Sb4()s7zbIn&R6rKu^p_k|DHMa}=F(Gqlzhxjd z2P{t{?+r7i*8Kn4ljmmg;gX5&b5E50ic|3rB1LY{EBiT|eAt+AvNwsZRzR3kUZq6z zRBe{9RuaGj)q{a}a&*K{CjdblUf4Lx{dL>Z-AhV92mJm=Hl}2AyP$aTmz(Mdk#QsG zCIK!%yd^eCDG_EXyhQUw^zCsGXSCos$$B4lgxpZDrjsM-XnF2&z|O*37Y$cq&(D% zR|9EXwjf)lRXbo&z47$5&)l?f@7TzMW8ENBpE-kL5C#@upK;lNgMG0exk? zUk)1iCDFtbn6=C(AJF9?kp{XX%p)=!2120{zv9nO?ZYB@?Xj>a9F~i*Xid@`q}!9& zJD}+o<3L&F^a6UY3<` zb<*2U)8ep-!kEF2x_I2IY&^b84F;#Y#%KE+%*Fxs!w!>UfQ{#DtmX-_KDj zXtMUvQ3%q2t2%lh&ywdhgknh^XGNR<9GZN|%_U&8t(CjDl^i7o$AdfR_8tnq!!{z> zMzJ=P?@pC{ne6O!oUVPfW?-iEDt@2o$>zu~?K$m{JDL+ml6mq;hp%i-UI43i>bEB* z>ghyVo3t#U3w_WYGWg8DR?;iqFmhVc;<@OTynpgKA=vrd^$z@^OagE7G1w$$dr}On z(h*JAe^BZ9I21;_Og3U>ZegS5##1ZdD0DTB=ElAn=t=QJgdEM0`7p zUYlYwoW7nFidIr9>iScATMs64q)p!O{qZwvNCC;Fi@$d!qUSiB3f4_7crb|gTnXDT z+bs{GHU4G4D6=oZ)T%{ogHz%(>}7L7LK_oY@a9m%%3~DK`zn+Q?pfon4}y1jSA=9&TF${-H4nt z^n}043CTGs_dPOtK{p>Hq$g@!)koFrdJ^cpA>wZn*6ra%i9fdSlF-~Z6^6$ir~j*@ zv&o7BtOU%i7!^}pyt$D5YmNHnry?-Ueu&P#7KY|-seLZ)L&5ubPupjA z&p+C%I(J53v0`0(0$F?ge{Dm?lNGis8d-MhNbiD}<1tjtgY?;$xzw`$aH`nw+pRlR zDPr?r{2A82YR44uKM8ZA0t3Q(O!KTy*#;^8z``t6O~k(( z={$5~sbP@^x*-So|KUxPR2_2=KXiaYuW3HPHAzkg?N_XfEIaXFS`%M7#KsgO%3o4)-9z~&Fq zy+;0*S5FcBU$9nR|Ko^z<#6CmM=zPvsgul+kU=Oip~1AO?R+ruXRNtlf*9CPZ-MA# z!|d?CESQRl&o(QN(4X%(3R-(k=_J)D7p@-uC#Z?Yy@E)5*2S>uH1YwNHSB=7 zEmADw-8E9|-tYXPg!gI6bJ`+tq=)I>Z=9aWNJb+52>f>!iX3UGpsTWwlRvkgB^$ii29eMOZ24CN%8(CfI+5gS)}Uq^&~K zYzaA}SfTftR-IX;@)tcYfD-9 zgnTFP*?nWOdrl+Ne3tZVqpgNBXqzJr5nL)gC49(@P}bUiq96N@0V{{y_ki>A&lWA0 z+eXa);3BOz$jSrd>~Ru-&%pYaS%U>lXQQF^AcWoR%h)Nto!rS7s-^8Qd1L&L@K*Ac zFC>H$nQ(%lr!jTi6guwu_MKijkJ%EEzc7QzMI^`y_XyEa0=t$yyJvHZ`RwsRSe8rE z@o^lUVz7N*KcQm>ee~`jLG@6}AaC`Kp#5>yY0)t=LWbaUPF1mWm5UN6Nw`t9K-nJv zE=w=DlT?Pz;_I9Q?o$c{!D+`dQ5pnGXbq{!`QCsyDIpW`%X9enTm`DZj??oXg)<%FSHsiCd5 zYv)^PWVGIjFKSb-oo_cQTeMT%t_5&*GaVpZK@s=OTYW(GjXA@ukvW-rK~V1~5$2F8 z!Tf|TQ642nk$lc+w=Yn-SB!UK`mV+6;WDI{*rMVWrpEX*xXx${rja#xiKAtU$pa8- zpFSU+z9@C@XR&^A*MZGf1G+kRHH!DJi$+OMat-@IX@bE)?@=DmIOT-#oS!*n0SVD(mVcKQ-B*B0PHh&Dq|Se`H_>=rU-K)>zTg%A7tg zX(hS$#G$bvsyN7J#3KzVc}ku!^0gtzTLHQs&VR4E&hp$C^43G}qzt>y1(1MyhNGp@ z?6F1mN3VPm1 zM>Up@f2VLODs=zB&`aI*ZKJ&2ys;tMWV~PglGg{h)~e)_}T}e_OovM;h)BIm)=QmGgcQ^Ax$v|BfiD>dZC#F;8)D;ALeE zRp%46dqPK^U>EB8G=|%qtmG*K{6m(*$d%&vH4^lo;17BJX9z@ohg@EF^YKm+z>!R*rB$fqoc%=KVa;_aRL9)hZoreVg#NaxDNU8@ej7Zn!uHm z)Ut5@pvJ+pt~Sk<3eY)sshU4HNIAa}@VnV(C|=k?^g7+v@q)HV47t7<+_RS0G`OH2 zEhQX?LyM5uVPo-kzyRGjQH%II;R`{h7b3^prS9c$Czp&K33-XhIekoIn(=b_rnM}= zbC4a=sRwT_?{V8(;qFKa;bJ2%d3$49{G-0`9O6KEygP{7EKVujGaGBBDDOY-hLgG7 zh$}gp)niVi^DSIw#hvA{PlT*NO#PRr6YT1!FQttRJ{T^3v+sHM+!{bJjk4pL_2= zkO5R4J(Q#E>HsUR)un5C>BH`=UpfEP!;#_6 zTCqGv3+r4IsmPp}9=;F*{9nXKmvdM<^Ejglt#TVfZ|?xL{{Y|KuMi>vSf7(8kM!z! zvBCJiG7Qc)enQv0k9%F{`>@e+!2ND+T?45`nFLuqBe2s%YGY-D@_In}y&+z#y+JH> zvYous8^}1`Z?LT^?@RkHrmANYF~SO}LV+iK-f@;jUxzR^*oQ}XcSGEGS&wlZ`K(xt z3s!<9?GV@Br-Vf@yKddsKL)uJ4ga-Jijx?WrKYb5(lGEdPs!T-xt%yaH5RN5!+n?Ie)Qgn32&3yP zJM{FlSR$}HDv3`*L4kkbY9ss6c4y-L>Nl)AmP^EO9PUp{lEhpl5YNn&s}qRexSIRp ztBl(lAN{=JpO(^r96zVhrAs-eKN@8C#n_(9^qX1mzG$Hj6ix4Zo)Yi*$bnS>!Ih{K zu4pT5YQy$aZ^zv7lOfi?Vg|Ns^Gd>-T|e3tVh#d}s$lDRpVgfmMPhVNoF-h#8p7c$ z@VC&{+5Usw_upNrm@~cv)uCSqwKxjXGZb4=JAcilg{z0lSA8@UVV-iA>#RdV+nvl{I00`d~$ zD6ehpVm;P`X*;AK+9}p(qQG-#*JYHVOYF?`mvUTN`i<>H>S}grW$gh{k@L&NseLhC z3S7ISvn$quFDcHS?U2JR)6W?@;dyD2`AG0moYzJj; z1^7LLbfH~3*9)>=6N{xS-mImynBrXw_)m;)G_&FkEM3rM!5r9Y)?t$ z&(wC3d_oxr=^R%I^(R{SKG_k6oO1b@sm2oS*b6Z1W?&*Txqx2Rf!%^elPZ{x*6%d9 zSJoX`6R;V<=ES^+4}h^7j8Usp9#AW>2E&j_DyL?>EAFYz(`ph zZ(p`}5^o+q+Rb~MV?=uA^4tXw^M2OmVW{017WzJH$H!A7iyTWiA4EU+qKyt^GgiJZ zw>AiJ2i_?Regsu>NVE_zZv1NCoNsZd1-o|5Ps`;U|jIw^(dfx@< zdUL$whxY7rBb-bSzqX)0Kyt}cQK>sQvp=!nB&tHJd-~;Pg!YzBK&qGb-tOev_YsE; z)ECcA%s(W**g@07)=Hxp#_Q^nh!A$el()(@?}?(Vy3Ujfa3jWOy%!##qBdNl+P-DT z(Cf%@zi%!+!zGA*vNNnyK@t9)Mk}El$SwLMaQha`<*g({Ut0a~8E=oq8j9&p*a{CS zC*_o*l!0%5z*N&VQ3P$HL{#A?Ta+cIVK|rDXV7HtZgo4KC4HRL9t&TxY&c{)~jIk{+~2O=^59s^15%gOk9P8;_-Ku*rO~eyjHTl!!UceZmacb8@p1MwweYXL#4Be5*a&_Z2i{uD(J>VRnbY6USk~03RCDj{;_aA=+aYAPNm;5L&%Jdj?2eH3hNLg9v$8R z$PMEXSM5_5lav|bF;KenuH937In9XTox;0V$W2)X7|Dx|FmPJO`O2S!%%esxm~rndEiT*l-{gU8bc$8jItbA_m0@!F$QSnIK8 zjcX+~coOztxCY7RievUXol62mORhDzzTRXilhBnF=MeWZaP*yaX@7U}AQqFqG`tnZ zMHnXm4?)G~AdK>g9g~~zXhBQZ9j1A9-W6rcsZsSia#AjkSAXzgvh8AiyPK=U^IeNa z)V5sIY__WV=uty$+eSfIJQz5u^MLbSQR(NMYCo-V`7gKcL=VN!D^`A$X7X)oNo*$V z?QZ7wX0O-wUS3r00lLTK$9~Y{@zIT*1qy*X^De$Pv^616i#`yn-rY!fL(iJsPY>Lx zS!ZzV`qU-une7&wq<)Dyif8#8*l`%&((a1Ekaq2L)lNt6%-tn8e=@?$135p4{x@pM zJSd`mg9C!NrYSmc*=yUZgl}$0K(23<1xanmC-{6re8J7@^KH!Mhpj_3Fkj5^HV|bj zp~5-&3o^0MEal`D50O~*(K+BpZlvVaU*P`)AKpx6+?heajM6xk~q z7>c(X3E}snfihVy{p#gIZS!5VcsCSvSw?4Sp1uPgHL`DecvQI;$JkF zZ+snJKYs0J&KCQsBb;o_9m}^_r`)S#; z3neY1Ip*0rUM(d5;|*tFaFwlnIn>7J6ijb{zTZS6t1uA#nsvl%4%dPz!8rIQtKq>*ve2#=M)&s70Xw$iXn(KJ&Lh>)N0cDmB7lDP! z5W}Pr3|BqXp+T8Goh3c~X>-Wjvx6%#@8T17#!7YIN(A~MbXdQ=ogem4*H&=x(8yGg z@@`2(rNvFO3&Upq7D7C4GMPR)gZK%V=0Qs709z%)Ft#T;WwjS5aYynwyXARj%`I-6 z*fDpj^Q7KmD32aR>9%KIVHa4X96)`Tf8$Hir>tunms;)YdL zG#M6y<~mK>v%D7vBm2JchA1}Vd_EGSYal^A6u~j$PqH@(S`3%Lp5mz0QR=m-_CCdj ziwAn=4XjxpOEDl`Te!z+}r%+%?69sgRsSv;-qW*3FPubZj67y zER)WhaILi_skYr2SXJ|y8?*092jjm#QP{&;KY#WdL2{_~d)NODXo)8GZ=hwN_ra)0 z4PomDmkhdEMNb1?QZxyCqOM8J9-lQE3~0!UDoYoT=rFS5f0!V8Pa~c2iGo67G3>P! z#AtZ(GQ>3JTTtI}3~ncK-Y4kOHR_l3ZwzAl=;5dxBe#0+nWc*vVvr^{%=J|Ay|tUO zy)Rj70}H^}7DFRV2^?G}*8~cw-Ct*eQUL^xGqjzFN_`C?Oj_f%654B%Km5teSspx= zdcjJhJ+HaDQ#tiLYHYpoM=0l=WQ6hdoSU9Jz_mPi=sH1m=IOxV_F>0Hu!I9)*KeHT;uZ7Q{V#i}A*})8xE; zzxa5XDJd?o-lT zyc+_%swee(*>j}W-v2psFQr8^Yrh@9JiI|NulI7Od%kX?E!j{wY6-~ydv?vPu1z(z zi$3ZX3~gcKzM#SxAATCbL!E!%VjH`=`CWIh_B7M!R> ze$v07SnRm2xx1t1NSeACIo~G6Ku=rzB%zTTns|bS3F-<7*3VEH^VicLIkr?sx)q`k zWJMrmx0SZs`I_qD0ogBLhcU&P1v%d1S8ip7C|BKn9lsbX1Qb=?=k#Fu8G+xMvkK~k ztBEwH3<1KG{+|%3PKSmscr`y@=(fbReUC=^3ZD`(f+Wf-!0s_^RJ1gn@8lc@h z+eXiRzo_ytPsDtSm3-c{#eY1jCEV(hV*k~~0?8~dH7DC}TyEKE9I1go3Z`^gbt~y^ z+gZr7R&HPx>(C2hqIbgsL?XJl%SSanAgCr|7GUV*;$@Wl$175vs=9~7hFk<6Tr&aD zOG`Aq_~gtu=yB8{=FvwPtH+}gNPDt=V|)F>L)~*<*i3gJ@u!xfPbxq+fm3QGU-wqB zY~T9I!>vkn6d6xN1px2~_o$J7$XQ!Bx0|tzyN%Dz+S^KIFx7au5O8{KD?+tUa)0O9 z_Ssta==*Vzis<|k;B2K;iKAG775ww084aEZfV)ZbV^;ZVYLjq|U3PRLJnhiGdb|h0JW*H0& ztkgzxXEIo#zv!7tJs@ymg7vHp! zTAW1N31(9o&b7R<1ibZXBya;IHWLvQI(rK5ii@FCK03%KSJO$nFEJ8N+9?ztnr}gL zl%px~vcF|rVxiJqEj1F#+tfc^cHLngT(p*8JlPl;S`2C;ic(iXX!G7+4k-qDD=P^_ z@kK<$LlJRHj2R-a(iERtsrYFSJ8uKxeJZ-?YtMRqHgLv!IT1H}6I0*&)ogCZdSo(u z4JamCUSrR%g_c{6Lb~uykorI`Bw z@t&E$eedmjy!Nu&rEr@lJHqgqde5Z~dg+LIQ1_*B68yeIVTGr3rvEaE;D+%1ii^C> zJ*%C(n^-8U&&0zbzwG4Jeb?t3?K>1ZjsrcRO3L)L>XYqr&yDhp43uf?rMF^P^E`eiL9wc;d|>s z3}OV-ogEkE&-#V5&YH=;TAyS@ZZEl1=J-sCQU%=-yyzP7TkpK5?kTeZbcsYIZ&;h* zi+8`l01B%{iL;gX+)tO~n_lO;ek`PcR)R^${IM zb3T3A`lGNC)Zt<8{QRp1K_jA3rIVOWIf%7cfq%^ueW>3%fMEyS^h>!Qv`Y$S{#X=m ze3xE?mNaz~5f=~V3H2TY1GBMRQvz8YA8aEilzviC4jMUkzDy45Ge22C-K;;Y1B>wv zHS3-LBk#)VA57q6fS_x`<{l8w+jA|@>kJ6Ia#=$Ra>(y2AglWaz00e*3Dv}`ckfvSmuca23Ihu$JD`v4zdt zK7M3{?CZJTjxF&#oLZd^r_u?zrA8Wg0`l4Oh%o5*i0ZOSIW+P;Tm6LPbN%#)X?)mc zPf9vZFYAr77?0+B#9T2OQ~IgtazZQR5YxJvF>+rq*jaM(R{nUNe)me;@QRn}_%oyl ze^Zo2ZS)U>nEy9I-18q0Vywj92ytA^9|$oU={U0l^=6o8EY~NVZ#(kPz@ZtP=u8d& zr?u2E!>$$98z&*}#|$9^J2dUHB-B*9+~X3^Bbj*Je>WJfux2Hsb?qlIZW-d);6V&Je?PIc}kNmmXtkEt>9sc^;~+jRTEQR0!9@8)u+fKB7z-wCf~t{)h`-%*sDp;Nu@>Z1U3XVYQ1lT zV_0zvgSY{icR%c@FZGPvO)UXsgdPQ3z^HVQJhVOfxuW#*`K?->dM|!D)p}z<%T47g zadD#-zl9brV}Zo>s8SLRC01(Q7upebuD%l;9wU=^NcKSW3R2UlY*VZ06$o z+_3cOWpLIn4mQd&QC}=<7hqdqV7U>mF+0cE23y5DyC1Q}y4~)+)l}o$OsX4DCw^f_ z!6z~*PSF{^Q4iK7reV2lZ4$0F@d=YhOyi)nRk`a2J?=qwqG9oS%m_KRtELNGXHH>m zy@DznxRk+>(L6=t5CrB^1w4tSmrT*XAxVB3l76i#Z4)y0hXk*wH))hvfRF8Xm z#r1ABO;RnlVoL%pKOVoIAX#3aWDyFT-!e>#PYmBSx4Lyh4O)UA6^%cP|0lj#)6qc= zT^&VB%F=mPLU<x__#vJA1v+Jt0z- zPy_t)G9QLt=GR)|$0nk=lYkmE;Ah%vef?|xLlp`&wl#M<5v<;#?=@RVw&c-Aa@dlE zv9t~&<$Z!bf3KHw{6gYJHGYE|6C^~Y4dx5&D0g)_V;8-O3Ov*a(}&O_tBDH@c(V{M znab}^EZMKUf2l(2B98T8!^=iJ2Kj~ZGs}(cW~=j)pp;*2#=eoi*nVCO-Hd@8XoSA(fZZ7$YBUP zd<9`}r|10JxeL1ES8pK1#dv*nVmt+>6RRc_Gyo{k9^1d*+`t5OHPI-jfX}aXRpKl1 zY5Xtci{GW=BuTusw6C5!{LG)XuijtE9cTdQ$>NRC@&ftqoTFs+9(nhtOBfejqdLKY zDstQa#7Q^r07kzadSC*%X(qEog)9_{vt6U=UY%m> zrIDK>-Pn?g>{_hduY5m%OoMGmY$ zr?p;A|HyTJx*Z!i4v0G^+ajrUM-F?~cry9U4$|e$Fi1JkXvBOKc@WhwbhqRZ*ST-= zbwcD9f{jr}r=U^78~v7cHETX=hDCmnI3IR_b?u3r9gWyksCGdKXd;#R4e)u6Zz~&^ zd_~>Birra*>$*VYH0+5q)3xsdZ*n#+FtwD0y!Y_|r@Ss~ph&>FxDI$K=9wcO$MO=` zgvdNuKVF_AcJD$Rv)b7!RK4Lwp->(_9{Ab8nh(#!5QY9%H)&`S;jQfnYpqkI6dX<6 z=^q_?p4DkLQSZflMJ_-p7<&{-)Z`zN&CzrCuGT_v!yu33)erSOtbJ1a@`f<1_E7Ul zO!|q%{3rc>rurT2q)Aaf#ib`k*9buo;M?~{q>QY@9V>FV>P_Uf_zhdFF4dOzQT02y z18nC~m5+9~6CLDTfn5_7p9P&ym`t+<=6xs*Hu>Po0AKSHP869RI!hhpfln#4BMJ%5g~V>^Bv8LHz!C_eT1RcXSIWA6D~)%~OMsR)`@pC|2uEj(Ghn+WJ= zSOT8j&C~*0zpun^gx5(#V6xxP5n_dt@Q_hfQv>aULZ7<-7!D^1CZ_5v0b-~7jutgO z?B`#4(}rPnoqP@b-nyvP^5b*5F6y;&U}q=dBd$r^HGXhcuDoN%kcB+YoytA}P^H#R z$K8!GWS@sVw$dmf$cFH-!-E+kF2aBGAV$A=?&WdKDU_uj7M!DSbudX}VxD;UM%hvP zFz(G%!S_n1j^Smv5Ekl$)||gne0f{e*x`H%?{iifN{H+A1wITP$j}|jsmZ7WYd-#k zS+{bJm74}~yPEiyCB>~m^$L9qT}7wiAIvIAduuQLLaY5&`i)TJ6~g?w5wsIbDr&u&F6|=e`Q77s&1!v|J3VkbKj*kr0o$GjK-t*#bWCms1g`}$wtGIhg zAT8U{(OJr}oFCj{C%9Ko^(ML-{-Ln(;2u>8fYneHttn~L+{dSEp zasd9yp;9e!B(LVK*<#W_LpOo^5QKg#Chfb->krNViS+7ysHNN)C^=C*Kf{pzy^Q=z z2_W&XU?z*(@iegg)eZ4V+UyNrrC;z~m&C!x%H8y3rdH1#gJNHA?uGSiqr{?YL%`={ zvg1|_jQNlsYei!YubQz+vGQ2^<#vqUANzN}TTAN$jwE7j)Lko1xHnt&T=5 z&=4};n-$s()~fIn)5^SzTD=C4uT_HKg$Bso{NkY{{>ZUESV4#yMj7Q7Q+n6`$#V%< z0jk^eR6KhS3(11-qZaPQO7L%&tSN?vAHGgP7{#$iM6PQLipmZC%G!H=UG*j?jvxGC z$0|tChjQJT*=*-jibAo-4?*>Lii7!*KnAN*K$sPcR1&^%k>BU}cUgU_GXS#*tD|`H zvb#J_{srcSw{8gtqixV6usqGnU-%6Mg;n>J+~*T>BJma5IWG+Qi1z1canzng%r|+n zUb7QhCCBH9GAuQ8R&jA|*og*9+?cSm(-6S&s24)J7r4%^&}F{Ww9|G}u(aSrl@Ak{ zUDz`Z`z$1FV^A#Mhdm|czC{V66O|H%pm=o4s`U?20yk?JCARb{7C=MqEm{*BbRD`zW`(@rQt+nu zf)6D2^W&$6EjV=??-r3d;yP{Yo8`5l&~lU!8is_?3Mn+-KEIMb?aZG~EqaJaBGyjO z4*z^z&f8|hl5rC0u;19L?`McX>gJ-89G6Uutp^AW4W(t6r{>IvayT6zg5C{!L){gi zCDqZlwO91%j_WyyY4;JJiA5t2Z5hm$Ho5GT)+ZK{{Fz*j{_1^F>#)R33GSb76%PxyR(I&S5*vi)Oz z8{d5G4F!b{be);ILXM?|V$eJn2m4Bxmt0KWJ9 zlb=V?{mst<#F6C3alq}x4?=WiU^0r~QZ@kp=WYXg-=6+=luOYj5dw!07MYAVs4=Y- z%U6p%Ce#2ugpoXp_sT{SHi>a&NlY9Ru23VPiOhC*#L(z^}daI zfcb=**B6tGe$*BaAm-X;;X-5WqU426w%@RR0`V7bVW4& zozd~~Nw{c=c`))$uFsKi9X3~R>jY6)W8+V9<>l(eW$?G)Itw-ZY-|5QJp?+V9oorC zl0IkoGNXf-y$)BYNDr^6r)i&<#V*b@5pz7Zzv~@&HxbTT^c&i@otM*3ve&7bza?S130m?pB;Umd2i#ATzEv86e)5lP^CSIJjd;)RY51 zgWz83k+ckA$%>U(x_vM8^U1Q~*6TW55E+B%Y6TC=QLPJ@x1D%tJu$rgy`38N$01;_ z>>fIwXG&v{H`~@SGGdt9>&wrr7sCZ#cb=x*HR{1`w0zR$ZvgO$Qt2sL;JY^e`Mllz zrADzuIiZb##rCFeOHWPuuH+Q@XrUdPrkr8X^O*A#UbqXSdtY!G$v^r%62Mk6=w6gn z$h$#4?reDx0O`>$s$|xuLwQOJx%(b&h6uL;Cf0Q!DR_ zWvsAdzhM5t%E>P>XAosbKL}KJ>Zv&XAhz2>h|e*j#OS%RIHRXbTZ z4_p455qE|l0GTXzhQ3|v5^=rLU4b7BaBIaPdYyWG>SU0bx=3IWbNq`OyPXel1zm7G zvtObwU~{p2EA$VT@(=u<F~Jxgkni?-+H@GFdmEOM0cef{V-K3(<(Fa?wbir)$Rs0 zSZr0O{NzMK%=xhEK^=qkCj(yoX10>AD+ig5>Agl$CBmBxhl$6)BHi;_1NfV6@6$K7 zboZsD8y-aF#volFr(*dz5hP!y{Q-@Em7E+lAMM=F)pSAq73ZL0wCGs^NTLLGoNNAT zlyG3N9!rFi+@W0Z8d_=h$;Gj)H`$kI(;AxF~d@el_b_@>$yklJ`Brb?O zMb)!h?CZo7-#Gcz*H0>3y|z&==qG8;PYsa9jN(|zJ;@Wk?f-@?wB_(Z!bq- zIZ1groZC-Avz&HR+0)wd>|5OZp8bqwMED0}_#b=YqhX0X>RHGlpZ>RKsH9)iFn9ck z7We5s73GHg*XT^(Xn(0a@3#d4MNNcQ=q;P6=M8z8a0WtSeC+45x&KCC|Se?nai4jQ@)x+$cx&zjdha zM{l&uw48V4e`i5n{&8FKZ@+cemL^~>pIx1mptGlo`$rrE9?G~n}R zT%i#YH$JquF?q*D@d1y$dSMrN?}A&~FDU%nuLA#Z)Wsh`klV!TU$z*31UU8=H@UCj zZ~U*33ooMG_&s2M=#_KGy3vj4a!N}h{_?v{)c4$r$!O0hg=PF@sr{YhpriYp=J@OJ z?{7JtQU9gI{qyG~jU>NprT!(|&^{sh3LKfXc#Vh4PqKNK8$!t-;iWKo;?D0>u9%>S z-B56M-he`(Py6?PX#@WlE4!CpvdTtO>>}B=UcM6$Z!7=$%I7@l{``8)N7UG7GDGkr-C9b!yE;Oy62DL4$#mG?!fl~7Cuib?{TuR zw+_+c@h|I}lN=gD2zHUe$Ju_A8M5gvO1;N*sD9$)D#no!+O_a~I*dEdAz$@9f#jnI zA?S;(9n(xGnXvBP!4rO34C`6E|B)g{fS9bl_)8z_{`Wlk7)HT^QTtv^mc3^qtZ~;| zXL83Q!6bB}82gj#(R}5_z!7k3k`QF4mQ0DeXpbR>9W8Z4!`-xq=#k1QR9w(@@Ey=8bT{@qo;QA6^}txc*>rOe4I+a_{d% zr^4-@0ch-JWnF$Q;D%h8a%u(YSk~EKh5sh+bwrx@)AwoX$nuEZ=RIDh$X=ZaL@%^_rrx=J4* zXkFZ*^YPB>88yYuTwU*GuLQxf1&JNkjD*&o$wEKu0k~dQqZSYl7iU(4e~5Z##X{Xw zVxxvUe`Q~RJdM$a@v2m>!^e4@2qTi(KS32HM2Pj<653sBW@1s=>1sx-s1Egz53q( z@zAdJyty}s$!`04e<1n!e^^(`{NIBw0l{>f-wgm;Y}2SFEHW3cgf~zd?}K5M$A|lz z27liK)Sn)yq4i0DnNMyaztp^PC?)}2W7NA9kyWAVfpAat$=amhDvHrWza;5GZz1wN z9Dse2Q{zb{9S4G4B49l9yWeb>^reLqxyIGAZRPj4XZIFhz@t+V`O^L(d!2uksV z8g9lCU^x3Hftydz^XY*U0JCQwBTVtBSUo9^jRgBK*4V~XA!zaXTD!?0y$s4tjEfEy zI))y3L7O%((AesT4H^Of_R#ZKXhC~z@*{JY%Zx0U^?8zg zs&)Nrsl)wUC*ppjiT>5k*7=-mBdk^gdr?11HR!!K$D-vOpV*1~*(2isGWAuKCwU(@ zHn>rlw+0W}V&x{AmUY(-zNZV0lpbqwZO5!VjSQ$v48~O6-7FO=@HbM$$h9Wf#XM*s z`k<}^v89U6&Is|oKoh%_!TzZs|Fd`Yib8hcvO0t^Z`buulowjWkyW3n!-0l+UKKKJ zYQxtqN>l#=ysH(ITj-=J**7%=WRy;hv~u@c=$13czN1jSXzMGZqhSTwl1dt=p}9Pz zNZR54mbJqISu7oAECU&2D^X!u_|SmQH9*KDg87}dN5TrLSXHT;D69$#6&dFI4$OgR zhuqI8Fyo(6PP;_W{22I}W^cJf8|pd}z8dXRg`f9cNjTg;2bCsyq)`XNK1(~Ki1FNu zt^W$D_$GOiZzZWl1>e%Z+B3O0y@qmAI7!JwdsfT{R24J|Z)_9vNpSycQexHG`8;D~ zxk~bcRmGqZROmFQ(U~*S!^fNSipYh&KRwAycBo+y0~|cc!woKPqetw^-Gc`L^ zX;m}vj>|w7>3#2KiIpT55mvCB>0?f`Hw6uZ)sl%wZ-`>ZYS5fi(u=9&Ey0O)nI6u4 z)j%O?1^ZX0ngm}pk0gSyLa{s|rA#4qZrn0LFzb*Cw4MJ%V+omeq|7##gMH`?2BLS6 zL|8_-G=)?0U#oxu^?w^cDpx4V67Ux>$Rb=vU(iCZWvt=|C`3~IF$VE}aMDkdmlCU$ zF9aked=Iy>iYEDm7FwHru~b2zmDX2zZ+(Tu)fa&Y+Vq+$5H2qzg>387 zzG1G?xj}jFD5c8Ru12*Qk;}RmWBHdUdO;19e3~luqFN|51LfvBs*Lk~)R%AucolrM0pNk1O?{vmg_qaSj}s)*eT2_N9(&CA*NbbR%ESE#WlWz)zX1X2cxjYsf*Be`VhL&rJaB;JP`DzG*lX8li{2D3u z7Iin>hG~3w)4WiIa0;RqtYLrE3a8~&uldU3C68_qd1nGNWiMik{*Io2x$2^EMF=qX z%5ni+n%WDi@fyva_Jrh`TC{9>PL`mxQKqoSHyoteRd8~V^30L5pjK?3le!%;SKDTb zA$9g6)6DIV+g8-{NwAECxeAW$JCwZB2mG)X4D$`-fyHlrR#5BFUnkrm_;+0Ay1^1G zjbv7#6jY?MXk)#K;bJ&p+fwSzjxTL97};Q6ao6g7R_1KK>y9p6DouE zNYo@1mq>|r1l`?>(b~yJQzI|6kInLJL0pw6ibw{sS%?%fH=qa#c*%onJFMFPPdjoN z@hiAjJONSVi$74Bc||2iym=ph6(7gufg{Gro?C}l?Zb#*&9KWp9M#4$%nrfrzATZn z!(AslnlG&L!wn~L!7I1*v(Jx~d2sp6H}j*28h2Z3HW!&K$vj0Wp)4e@t^VPOD| z_K%T^b3vMi3YgPYA9mhLiX<8*wh&9h*j()SUK2gAXS3mwDucx3;(?ACQrDsp;s$1vk z-2!=gO9%^of0f1Ol4Q2iLZ;t{cC>F}t+&Q3UX2~xz#~Fs7W&c_3PnHe$a^MeEGE-W znFmmitR~WM{2+|SXX;4|d)&8xn@^dLhBxIp#EwTBI%NP5@-Ab?<8t8-5bu9b*W+;N z`Y4YxuPEZA{EgZJ&*Po0!@z0?JSQkg_t=?C=fN{{^g@P{H*b=jb&qrzsq{?Z0p)aQ~{%@zG z{`UGR*3K;XDj78S3CmiH&;S%jjjGQFt_)A0%0c2leg=xf0ZgnvI|*nA_>%l)_Ov2bgXl(| zCZHP23WiOWrjpU(}_?pcJ6ecrK;}w$Z^D!OY?^ z2Bt`+c6V$`yM-qiTuP9L?{*@3{PRY4Wor5D3XelCl+tKqn~MBUF5C=_*f?P{`EAFE zuSBx33DSn%oKPNoFCS4IjN5N!J(R8c`lQ-)N}MTT92d+!WH8vef5N&LI=w(CFvsdr zQg<|Y%@A&fb5d0}iG|`-B4+)p9;5e#-iNT9hX$RYJm6%5tf>rDuP7t+hjray?7w?D zZ+zah(9bdCznxp`9+*1KiCm3qZKRapVz|A7l-jr`{x4)=HVgvq2&Nh`NVOZA?9BM)Fs(;i{F#P;+sG63#88} z-!VZsvpB7&0|aml({LuqHs5&4qUdeh+}2e6_!k1ysclv5a)deuZn^-5~p;z^t7e zcZN*FG_U(k-DKSVMI4+dWq;2K&tBydBxg%PPtDm~lb{-sZycN$8!~yHIaV;-oX35; zpU(XTnI^wIINy<&EaEkFiDf?90q2H`Z#v%dtL$6L*HC+l}D0PXnQ3WpqeXXE~|9=vMFU{ zvNp3E_@pCpCOL~J`aI^5%<7DOO%OELHh@_32AA#|=#wp%Vp$m}$dQ6(oe5yy6L(s) zr>g3Ra3o){SlUgEVTK;H2RIP(`{ke%dpFnu>(fvfyp}rQ8>F&0jX~*}{YuT@E#k#> zvb-EsAOpFJvQfJOp2u&|o8yUh58#X%a<)tObsDdOBr5xJV(=~5qweuYamdg$+iunh5y~Hhw_L%)tvC0{ zBNespIhF6S7Ew4ZMK|)+HM42I2ztuf3+C*tuj)Vzz>RE#eu%Cz4Ssn-!jR?0;)xzfYk+N;{`4!O+D=-aOtq5mHn|!8v9;%Ej{X{g zrH@~})M_!5Jy3e+P6saLXrti5riy$!r@K?D$L?3lI!b`kik5rp%_~z%<2f0j_lbA= zL5UK;7Rccl9ZB_-4!$9gSE;Tw>o<|e{H2jnDXZta;={NEio$3qa4L!_7sO@xKv&eL zxIl&bjWF9RLhZC*(-rP4yb%#*gdxnhCM0FI$1jfF8jkNBh)M4hj}%_V4x zMsn>=c;i_Fl?O(C$6pcF^$(!F@#{r5_*}lSRi{|cZ;2`7He}Ni^Q*-m2Oi}<62av zg`}jD0(V_We#rmS>q^%9N|xr^f3=pfN*qwiY`&^-_b(Ujtz%%u=h&z#l0Ga?b6d`W;e6pyL$b`Pce6|oX2WbwfPkj z#x_!Jb~g$+ncwVBQMHH0_V%Qo_66|)I@@kcyH|X?l@L)}B<=rPnq`fpR;d4^%*86< zQsqq*b2tMPkIYI9=yGUI;bTAvTkz4)#?CYtvZ`7qY?mU~SMPwgh5A~*-o3?l( zN`7J9;q-Gl8Q)6e($rS(JJ!U39h!DYcU`DRw?nQ3h8uEPRy9e1Y`pA>`(iOdzEe$- zXt{t9O$IN0Elq$X{u$q& zZI*No%AMG;XMHVB29l)dC8nU7_StlLyty7zGI4bYGt1z%{e&Gjis}0SdwzI3{DlrE z9~whqKF8BZ9C{E?MY?NqsAEu8rfepfiU*~6zP%VUyCG~Proz8bv$h21kE@|xXKDUykBzX(hAl$C$5;wOf<3gAvoOK6NL)~toXKFibicf8w%nboq(-gYiv7Rp4l$h# zED{qrB#ipOp$PvR0Rz1k4R5V%adGA`#e9-(M!j;CzXj(sQO+CkU8oGm1G~E2RznZm zB!U2A1f9*p+RKyoY$mjoWZpJ`9M%#uq`TbSzZ_&<4Tb|Q$g;e)*7VE7M6}yxGaE#o zyvcom^%l}^zZsGW`x$g25pFQv5$s09**(!kBeUkno?}wKbLbD}y#!&elGT-zB>%63 zdd6I`?zGdr4eIu?`MO4OahS=V^3}JgtX}=CW6XHvz{H%J40nMX$fZc{c^2Blu-cFw z8UWojsU}Cf=Mqo0Qv4lJ+G>>5YbN%y%euE^B#{l<>uiBqgpDRhd3CZMRb13;bL2N3 zZAsi%T^K!|JbJ2~u(Du_7In}mp?qaSkl1Xpv%bE2?&G8)Oii|{iHUKY1IWXwO8o}%T z!`N4b#kFl)2Dbpg-3jjQgb*yay9W#IP9+fBf)g~jySuw<;f1?-Pwu;~U-#F& z|Exd7V(-1?T6@kh#~f4Bd+W70Wl88mQ7z|U>q>8J;Z?Dkif`<6y=*2r!;1l|;lDw7 zLPU733L0MY%}~Sf)3Ld|wO6D?kn8T9uxmVcj!aAuPiDA({zOVC;+@OMNr1Up*jLu^wrRdnmklJqlcY6P z+`8`Qe4342r<)9Ra(m=0r8%FUqk%+R`IWG+bg@KGvTnIKS`R|5I z4qAfH0{M~R>w2=bcv0M7R$4sva~lF>5z^DSvmM~Op`@^3ui_n|ISaOwJ2d8#_YYRk zVeYvwl=oU#pDIRUf9F~*Q?eB(U*)#pP0V0VNO3`KLiQ!-ti+>+b?iUicqT2m4b~3} zT~WyN{j8_7)R2vM3>fa;$}sD7Xr;!->0-;vW1zu;uIDf2)p_Fyr;Xc&Izn=A?) zeyCfo&OKh{fzc`aE-kaDfuY6x!Xi_|`(DvnWzK9E!z?qo0F71mDO9DQ!;tO9KVf*Vzx(qUQZYkyp=Jb?(L&t9KNsWI-==5;@we5dy>B~%9PPHe@`eY>4Q z(eynvml6DGjxy9^Lx$G{Y!)^9)6WD$d-NEMR-J(YjkX%9=;T8LGB+xib|E;j>svkM z&sX+#sE!H$FC{YBy?vc=Q<8tY}ZUR;e_RuOM`I>l-=D*v@(P58yWoq z1rWCQs8Gg+r*D8L-rDV9y<_!*`biRJ%*-&ps5-y8Y7A^dVGkc4ZG4?L%@pr0T+zdcGfE^ z6MLNCoUm`jkilJKlQXMqC1`R#)juq@sBrNlBPIk?5z=(EpxMq9a^(Ys%^C;k3YJWe z;)o9qAE{E<%QK$96^-MG8BbYrc5Cy~GxT|}>7wQm%4YZ$*OE0+TQV(4w%#(5zSj?P z2|Ui;-iwV*+V;Wkt86hDG@9D&PMDa>C=2EM+&rB>OWK@0U^m3pvH7b!h9!ST!btTR z-?rcxQ4H2J?vf&Wty`0#fMHor&gA!dCbalZEDnM;vfC2uMY@A$EThrv&_JuK3Y3{_oQDAw$c7`75lOG)UlC#i3 zmaSX&>5Cdst<4PF|E5NLG({?oAl3ceQ83Y-mF(Bm|A#U)UFoE_DjLa;Wm;6RJG<3M zbx&8j8RV`E1vWm9PSNb}l=(W{za^PHm2q#&*w!D$&s!V+Vgu)wE5?4&6C#W@_kGOK z|3bt!P}bFs()Udt{~_}5Z9&{o<>3cHCE{pmQ-tf2859_)sGj|e=Xa-x;f-XX{q9nn z3EkM9Gny~&cTDlT3DJOxVsf8kYad1^t{Z>;-)tBzuw>~FtKB;FaK z)I%8QaBb)c3+X6H)UJ2xa_F=SBo5Li$^>(emlYEJHMsBx>?hdaN1_>+0IAg|yE5CD77Kb@h|k-k*{3G$KE&fi z4BJ=I_FW-4Y)~J$UuQZ#_ar=RbaVGi**gSH$oK7);ztI2b-yyFt97QN244rRO;i63 zGUA|+1-@$nH@t@t1i9fSB169pbUbRTdS*)-^pqnhYjE8zE5g&}14aJ`(sYdL{a4wP zG#4aNcJX(3>u*c0ZST!(8NwJ24Xhuhy!;Y!w_0V1n}Y+hO+V89fQ6;1UN&0sDnAPq|U?nNShIdzg0|TtD%NQU-tp&1M;v1N!rZ>8dC!K$uP_~ zF5~i#=;xgSDP|$tEEKm`01%3g!f-<3coK*vV8OV*vNQ2<`?59;Ao}^`gk{WVs*RuN zBMC()y@K=So$5hwuS@=>X9y*EooxGB=JZXQwtK0U!li{po3} z(%@@RMak6S5XhP~DXUJTl6japUqd}(LJLKo(|U)GVWu{0PdH3KHIu>%uFC%VWqbG* zRS3pUgze@E#BueUW2xjg4rmo5x-e6^q>1cQJM``l1pO(N?ece zkJt7h^XUvnzpqIBY^%(ZF(w(R_H>efM9?GaX`81sSs1PcIJW}Mok^hDS^lL}&4UBS z(iL)m8Ck>!b;#n;8Erp*PU>nm z!|`gyroy>*q|Mh@lY*?RXmXZN}q5u+aD>{z&AhWDx2TWXzA%igTr~qL1iS_IX#orOjzC!UIa3qbQLp( zsfT0x!(DE^Sk)idX;fMbJKs`tTBc_!E~cJ9KjTj#evS*H){{Xgaz`V=lj*+jtQkBB z-lkRgD}J$X3A+v$`?Y!x%H};k4XYjL;uR}3e|lkAOS{5yBW6u>FTfIzKV@f zLdze0tvn6_*8ok|bg!zu8q%zj1|{#`TAF&ocKC4-5joAt)v@J2=^PA4Zv~^T4Ky5~ z51xp;QFd&b zY#EUwWd~v(*lMAXTV383mXhy%{xSAl2vLq2@*_RclTylq>piB z^<;E6c9#(QM@86Fo$znPdhi%>$WBWBjsjB`sV*6nm$?c~-i^kafx~TeRg^ zl&`(vl;5v2HHcntV?4$4jL;Tih*<<85})BhsW<6mBlo&34V~!7B``|Tgd2TDbrt`E z^L;^c*}$0Ml{-^6I8~?QoBiEeoAONS`@{R`*7)M;%+xfa-L#%UMudv}<|fNwS%fHh ze6cuxS`=qF09^A>*w(C3bX`R4I>y(mg{S3apCy;0LnY&1%Zk3kI8Nuu6zoMO#u$PT z21pNxFBZ|7?fXoiTp$P3CI{3Xb5XNHt5(*iWq60&qD_W+cFB%V1(t^vlYs*%$jGAO}?1wdYgU8zD$$cuwfs@+BwnL zH)5ZZU(CEDQxp?m0fvkD9$bznJ&0@U%oe#i#vc_+p=kB;F{=Jfgt!`z@s(Kr$ZtVq z3i532+ zN8?6HXWI}h31<@$6bPn59cXwrW8(UCMg$#wFS22>n(X?APpw5t4Ab zbCfx@IHb;RHx05-W;qk&&IoG!H{0p%nckWYO90Te5aNg*t4d zj%{Xu)UJ)P>Op4MN!Js%G;JFqTWE}fN%Mq`G^GP={tR{(1v^Pe8REyGhMLyukqM;P zQ2bm(rNtpevsk}gy->m@j9%>2D2-w4T1ti77A@qW4==5o{Na?psq;T2G?bOlh2P6X zIAG_{%z>1lHOepD;@9I5J%&4|BwMYF8_6!qWlSE_d)9Nwp>0j5vk+}Ui#&GJcNW7< zsEZI!=eU{`BG?j+K6pwN%F!lidy*C;Jej?2`VCdQk(bMBN8zq zd013bJ6rj+%vF%=vXH4}f5hFz5wn;P=O%+bi%opB*%H2XlVXE9;Sio2ADSeDO@hSF z{!q%VRS#9IZH!Bqt<3DxD#UjqwiWsG?mH6+zCTCcWj!$x82nUW=UIoBIiBQAm$Q=V zwaQ_JB-hI2itsL$H@!`$3tQ#$B17CHB7^>mylaa;nd=opO;k(7juZ{Tgbj|p;!E*D zEU0EZcm#0rtcQb&<&jD-V6?u3ye?N&Tt>+Lp+_0@KVJT{q zB`3e~zjJ7_v$Kt?O8~g4t`ZUw3vJ%K^A(1{>4NTsMUeqiul(DXPw(lAI2&z|Ay&lgLjZRCmFu~${? z;{x>w`sm{m5;m?_MS2WNH0aNWF#i&+2jU7Iyxw6H@bjO?vt?Qp7BW-?RvezToc5)= zNBIW^!c9+4pI;1cUd$+tIDRx>rKeYRR>!p3tcfJzCFl1PeR_tOZ1r^R{WQ=$K9BZz zd!p{l6S0|1=^FXUb26Mw?}Z#NQ?B>|&!U92tVc=9>aBen;s-C`{ z`TzV=W}R9k17{~E$BRt~vo?xQ+b~-coDPXUpVPlbwXE@P<~8PH3BY3%ym(;0Qq@Tq z=#K^cJqzU?0rJpJ(TXJpDp7vGscsZX+p4><7Xr2gKgO?U%Qq2Rdex^k13cJs%bnlHq4?1gm1Wv&Mtu(OX^?jLJl;qH+ z67hOD&Fsp5CRb%LS;fa$F285yAVVX0%mN4k?t@T2c0}ENJ*+de+o5PCJ#VG>^I#9b zNc#bNWF*6AcAZO1+>!eNntO<2lap@ALSP(e6@F6h;~02ARDMnl)$VvYdiprDeLFuK z0$OfiW^#WrMoR32w4ARmozBrUAcj04DZ6qVT7hIK5|uH@crMH5{j;R9F95En6;=Xo zfu|BrCooVR<&YgdAJWEXJ%Az*_Y7pqx`L3?;mf-@Y(W&)Hr33 z2Ntv^vS{bmpK0-^hSu@tlBoG98X+f*+!UDK4azGe*sD3wO(#;wDsAQ{u(>+zWi&GO z{XiZoaq9>Op5BWkprWcVE*fB}K`(-Pohs-+X4>-!JU?@Pxt{P?$PEzR@ciS3MT*Hn zBIaKxO|N9<+xG>{x!@(h-Rka0+6Wq3sS}A5Lq#)s0BuYM6_ ziZWpXGnpd(`(Ir(!~||hGQ4g1$BQzpPofiA?RsX5dKe!k@|@!JhP%L=w3UkGkjxj6 zA3n2B%exmR!Om{_WnJ??S>`18xTig_NKwm$b z72KJeEX`>(7^B20;`T6Clbw3La0}sY_Iz46&LN0>;KZ zBwZk^WuCM3D|!I;$wPd5g&P~Jo#QjKLf?0&p_&_LWQ2}#vV??8A-Kn**bGSX5sUhB zz0Whxj}J~sM6{F=I!DfEX+ZDRP2B8lw_T`WMa{D#ncQnnI^Xmq*#>-=ec;8GthzV} z1hnzMZDF=5|MWx-yjjU83R5_4_E88mQ#2m~;46t)zXWyvd&3Z>B)$-oJxl0ZKBD`+ zy>q*gIJih(h;f1{SMIr35KcGF^JCG5GwJOJ%IV8^e}8?(`8kE3Bd^vBD>wCYy~xcO!wChfaZ)63&31d}E@wA>wHU>Zw}=i+(oD%T8nBhZ+z z{^^p3nkMs;V+q}L2SlRv!NH<&w&p1%T2mF+;mXzQZil9~6o{&8R|%yT=^@M>NWaXR z^m1~foDMY>yNP+cSR{HI(n;`Pbs?3;;K46h*r%GDinW z8w@*9&Yq*>ig21i-b72A{nj6n?lhUgcTINVLz6G%F_CRy*uJQBcp3J>4KHqW~eWk6clSc&0m z;Dt6Lni32qYYR*=c*56Z)#@xcqr1LSyGr?R*-S9ec1_;gWMMi0RJ~Z5rsk5@I{zFf z)1j83dU<&l(=40KE&9*F9m7ApBAQdzF*x`X`vuO>kaeE}61+IGXVfL7dVX@s!FP|4 z71>H4Q!Vz`LfZExm|5%cfM$Ev8C%1Yy{UuI7fS^4#WCT9#tdx5%c23&#CkB5jeah( zbH>2+dqSh>xMr`n(9Kq#$dYC|MREoHkRNDq1OPSYgdaH9GOmTzuud!z^OaE;ECzfi2TRh%uEyT6vs_m%EE@t zv|XA#L15I2lXkZN)i9XP?W6@(ms<)>b(m^+bIJ;~zk`p2Y*e3#tU}x4F;WI!kdAna zxdiCz{MJ)K#5_~(W2VN5!^o?oUt2Vu$;*>=GS7h+_5ETYKcf}Dfypq4S5(^{ytOsS zVUGRsyel`F(eZ|J%@1`eSn79EU&4T9wN2=`m?@j_u=l;uE#+vcFxHGgYKXTtLU)x; zr9N^y-r3MHWS`=>=?mRq7XPK6Z%9kP4Jd{fVcnCzqOe0zH1!9p1&Pae8~a5KYee~S zNfi=mP;?;L0FX)CBr1h2&Z&NDfO{aT=3Gjth4Ej5@%lUbV!3Up| zm@wNMdl}dTShz~QUjOi^IcXyoKelzRkptGRvoY!7n5~1c;T6p~`t{{qJzwx_q;>qp zvB{##xqpfQZ%Jni{^|r4-xXe>Pi9!P0AzCrIgz&B_zn*JQ||-0TKiCA?n&pop0(a$ zb8Ui@n)*>{M&I^D&vt46>Nu%%@2#-Z&%Jj)GID4(5(*xEn?>GOg%>^!rDm-2(f2YZ57$j{!Cj9^4m?xJv4a z18J|}g+8fv{IvFR>pS2$#gFYPrPz<+9;l9#ZLN|Lnp>7yWi~?NxfooE32sdKLLuX6 z*hD>N%Akgz`;0Nl4^Z&rcDePbzx--#UC^3B?F+Z&ZA&_zhf{=vTB3Z^L7yhm|KOUi z7hY|{ACjgsZ1eC!=-&QM>Tn8G+Vme+;>aaWT6W~eHupQlwsS60&r7ovQmar|E2*ES zO9ZCfK&>um!w?WvohqTak~d|6?qwP~?DlMH^0>_^ci`B1ndooMn5E9OcE1-`?w%hayU=Ge6$s+8?}&M9 zuy>Js#uxxV9?4!KvMwMHFIwoS(5I#ltkR@5-e9||VTN(UjRC@0ez%OdjJ?c5ghN}r zak@BQ+*_%%kggl8&D#F$P9!53j!bc2gw-!3a_{6F$FZABo#vH>178#floHx>Hridx zM6$F%*57?lb8%72S}EHOXoiFDsoQKgZZTaLvo%i54CynGzAW`jhFl1GSY1LNk2XlG zk5OT0`aYt5&|6u4OZrV(_xJU_v6@hqTER$ne+5GU-M#q${Y~7G46X=1k2#yp(YVP? zY=vXx_16X!FtnZHn^5oS4HACLXHy+=+dcEN`np8XqR-BrrGm!ymA4Lb0wHGxnIT1F z$D+6DIJ+ICqUMkIqcjS{IWqhMkjZ4xlGXiQwJbHLeEb zgbWg2qWHMB_?v{Bx1VOtr-?x8N>ykXzQMn1Hr^uKik-X5Ne%Z;u_s3V8ksdeG(lbaHplwqg!)q=Ph9payCWm5O^h)NFU*?B{)W55W-2p%mvQ*@%O99X zRwt*c4wcJJ9*p1We}9UODXFjUvh01ZM{eFKxd`+sS7XZbYlEp1IbGX+=Dzg#CqBp~ zQt*X_X}jUy35GB({DlNdO|#O3#ZKv68gSO$?V{^8qEeAhzZk1n#jcK z*%q2&IUJVStc!RX(DIbx{4%Nzzdbu%yEW%>1IpJFf_BA>ve65ONV%P&hu7~WCMVGi z;x)*K0*8xqS%mMduWIIR48+gS-9~;YB)9`;0Dl7G4r75Y==9on4itjsdF%1=Bt=zbN@!@KxV09?(SlZ#l@5q8AG^Mg@TXNU$OJMzs%KI z%owo>PQm^W#=AGuUTttWQhiwgroIcYEV-htJ5OkvE*iG&+ln6eJuBX4rgmxs{-kY9 zU0uDXA%wu+WqJusp#bAJ5u=KvHVgpmuwgyYN9miB)Xr{JDARtCLPJuow~8H4qy|kn z!pC9JTS@ks6u@4T#>U@XAPzKMu-4{N(8R^6-?JgEw2Dy1!xto6#U@lz&6Q8gM)a98 zGJHO@ zbLk&9Q@&sq-~67zG1;4cZiFQf5^9U*3Je{Pb@$w#W^Gt-BNy~zrR6EIKM}_QM2|lm28zF;6!P+2#hT6M< zC0F0iNQr(Ai+jnU&H@>vhoL#5IA= zJt(X!-BGbeTdh|6M>4KSu}Q`cD2k@tDE3>y+a>7G97!+dM8BqHY#?=Cas0HKRJ8G+ zhBOV+o#rgQ5@LGxxik3xGSM|jHJ|7bLlRjEMr)=dcTx?xL?X5hizXQ9GFXFlUN2ayLH{Hjoj4L|`)&<%?gz~5J3MDFmm zJlKE9KdFe>L-`XEQ2Z64T{X1BL7Ii%NxiZP$Hu%&_tWn-%Q1L!aun;(8jq3{++j`Uk-QoCfei0x%WNm*F9{XhV zn>_r4b19`DhIe#AS8a;(k$n3{?x?(8!y#lBVZ%F~nMy-tw~~ zlcX;3#3P!snrhu5t(O5w4sE{ub@%z-_Cw zyH8y_i1?_3oqPLb-s6vpfO&gy&Vb0z71u| z&=b`i7Gwm-Gmu{_QoncJljxjA_k;SnX}0wEcd!O8hi5vK=6>;7HBd>}Mj!yXgAIb$ zdtT6IG$9|lfQ)r+C$05ZjA*P+hywbe4PQc@!MHzjowe@9K7ZlyG<4Ylc6jva*+h>! zh(WoPgY=F%snSom{4)4qL~TUEFz;^nr_VH2-0t{nwOCA5a!np-r0VP9Z7Yu5KN#D-f1&st;0^S?sE{IUY8862 zw7=i4S(P}F6jMxKS_YJ_d?$!g9$|{mBx@i?a?acTSYU~D({#bCr z`p>@jMf64`0)&p`|d{G z;sjO`&thSYErmr;YLwgpr9~3|XECEt5SiaX_!nL7Ud&6|dGqCTq+- zex!pY$)&qbEzV$xH?g>Zw9OCO4OIbF?c5fF_Yy#N>ny z_bDa4HQw9FIl*rm&UWx>3Z#=PeR7d%;OogF(cu9bHV-0)liSHejk8RuwEsI(So#O7~V~3R;rhJHMcON>&pJ#6W^eIlsct!eDACis*SAv5d zmQA(_GEKY{IQax&BnIw`?A_Q|@@-#RHGK=Po_nb|QZMPky675R^eB$r4=*kLRU*y! zabu3`&H}Tj7TZLDRj>u#LsCc8YLV=2WgB5+6XyQlNS>|{*LNN@xBS8VWC~`3r?ZIJ z+Tl&zSJlcQoJReCz#t`35$+_&8C-L~jEdESYc6Ia-U9fjfoy#e<({kh-F z17EQTqgS;3V&OjcqMxY3bZuqv{&FPmbp<3+?&Y>IJjZ^SJ_@q2$(2VrKUUF-%VVRx zr&70zv(rb&vgQmx16Uib+;%hha9KlpwajiwdeGqn@0_&s-b(QH;A_`-T!*?sg`rc- z37K|=t%mml`J7yjlRXz)nP0yDbbBYo3Z+5vU|iWymqJIz%1CxiHjRft;$!SyM2gY= zdNgSlYyDpyXYJvrN(@e;Z%T{&wg#dEJTu$@`ysg3Hna`El>k1Y zg$&k_Kqrzq=fDz=eM=a65r=oQ!|(5J2)}Cu?5Q5=2^xE_ih5c^Z4G9n6mZm`5Piq9 zVCqamr`f7!)8($SvML9_@Oxf<{|2K|%T<1?bHyw9JZk~?!z_u&s_T%p_8Ve{&moih zZ~#K7a%tE!1GdZ*N&RF#(^TqagIzv)bcSV&hQfbE zj^auCvZ%hAz{HjcvHb>c9q;G}#klFobK7r5-?prAzs=$?lYTrwDHX`^Q$lgx&n%VK zzhRZJlMb;*kUfCqsc0JRx@(7vTk|BFAw7YjtrJ!HNljaOfeCfN5ubVyI=ukI63-Tv zOS`35^R|v%A^l2vtCx8a=azU%no&`7M8n9+IMC$0=djs}L@eZ?q}|&rjg`rrVB(r< znXb2-W0?8U#XkxtNH@R3^z)~wCR*zs(UbueG!K726MC^k9KLn%>G_zVhG256-Ve< z_;w-9^iWXm>9ua$IatEZ;{SuG)>{31&hpH*IWC6i#?-$-wzpA|OALNn_*}ton0s1b z+RszEkXTMLuW)%3IYsqA$wLD_b%{wZjVr=@Vr+GUT=ARkJ+nYR(R&26bvY}2vrDm+ zbA|I!?gdTllKrlbJJx}Xx(-uF;8&16>G$tQVwHUDP#tIUAbqZ+g8xp2gU{BNLw`%^ zD%f0CFL9cYr}cEjuGg%Wd5d@;jA%SIZZt7`!>6$)GE_@iA#e!dbVF=@h~F4|09Br~ ziU901*rC1MJ}tYgP6{(1em7bcNS zZnaS9#TOiruZUC&>gev8+yU^6BvSBIb@WAsTbrrcZOK0h29dK-BUhyhO0a#$P2}Oe!RK?<;V4{U0B9P^K-PQ*#a<3@NGfP;16d> z>t~{2MmO;!(vx?uVqY(7P>A8P4U7B9iGz!t_=|JHIouuWH>y;RM${{_P-7Fv{b7+( zN_Lg{Cyyl;{}mlZ?fwn26JE;3qBIM0K=CfW1pcbg+-jw+k3naIh=iQYLSekLTY_G7 z2Ea=j_YW1XU;~zdnK^aY4Sl*yj|7CTH|PgdyM+`iLYQBdSmRZc$ax)O_f+QIR!Q69 z&)J9BB{Gyfw(BDx+W36b!^>4NzDw9yKVJK!45dpNmE^tIw8yfRLdNK?#zYQgs{I(-xzd9G)g|Tx%DbY#&-}1}ZP+QzGgVI}QTU&RYtyiIWz(ra&izd|G zt3SqV%ik96kS#{&YtK79V((a?khu$Dr>#VGB#n0gcru%wqVdE9(tp$-#KxR#q5>fG zmPF*hvIg{}+KcYI=aDL^t>H6#@dC!aBK=f{-`LnO(7 z_#pk>b8CtLO8(?=EjON+iZ`r16=b7b^EU5g4(L*0HAqoar^sTCPIxPY2TBziUuF6vQq?_9IN(1gy?$ORE_XgyWPcNN$Q!bsDO>F#4ieMf z2s0sG$jr|FBgBR=71^0@3T=}1t+lsq!Exu!$7~{GsaKK2Rr0?O1XF2*K}gW|z%tGi znC^F*r{DZ%?b%M!Gh-Y{gqHs$A^0~sUnuYwf5h&c%6XdyB=Eas)=XAwDIy+gE|u%D zz1D3H%@?O;q(5oySFVb}s}$FNOZc0IPrM57{pVHF_s1&!IO5EI{g3~+25tW5EdRyh z`Fk!7-M4=WKK?TW21d-H$-kA){x#Jo?q58W|G2)?|D^@^pV$A-t!OuUd$i}58{UP5 zhs|;q8wdou7z|97rm>IDaZ8Itu>tAhqj=V?=t68Jyh+ zs9hutci&s6i;C2~|M`8xg>-pUqs26K>+Ongh+EUGtF_%BpQPT@ zO*GUPk^VfPjer(%x}uO5e4&+E=)dQg;&V9;emQyCAmTxM7Fa4N0!B3@?2&avOt98i zqRVT&_Dlcs5`d!m9-ppJuL=%5o0<-FPN*|uk{=$FYUdATvH8pXCx76YdI;?WiHfb% z{#7N5JHXZxYCK)Kdmhx$6Gl>?{I!x~sNQ6grUVphhF|RI zDsGJg+%U%RPpOE?OT>1wyUjcAhjM#BhWez7^W<<&n&xi#J-&?Na@QGKeHEP>XDw>Q z4ur#VIGnVz(Q0~Ig0{nWuse8@k9X0fe=_Ut73;EQv+SL85q=?EP@@Gtbk=g~zP@}` zjjEuRYcf>(`9Js((J_s{UZG2#j0orM7_$nK!wK3F;^WjM|%<%?BRlLw?T)@N)F%bE6AKHAchWxn$rKvZggUs;_YAiI5IGezUMkV=^@ocfNM~nsk^V@_4y{P~N;M zUq$0bNz2Z_L}3aT4cd~dYk9r4ycY>C;@mUZNFzw*up;!6WtFN?XfQSUowBIbCs^qx zg|@zcAuO<56zW27RA5IlJF#91m z4v_qCmFeVj)U*F6AuK(A;xMoeTT7=naF)q3FtjAOtGm0dbV<(@eH`-UqNVwEAAiR` z$2(5BS7v)`!qp34Reh8dbK^{ztm1Ck0V<`N7)B-(mkBj0|KdH8B0 z;%2s&{#T;&qK}sSaCh7?u?f|?=IiM?R;o|}kXYC|sC(cATEm{te^V#lReVHxWwwTy zNztaeBD7%klkmg>#r~mc5Y-W&r~N7cltlbIWicy`?+saPyc%zDSf1?KU#-FNPrGv5 zG!nQhaUBg;t|)6+i$ds+?DM@F1P8zUaF_g{5jTHheMl&tC|*7`Wh+s0Zwrj@F{a^y zSU~8Wnv~R+RT7OTi{I?4op9OC>*1g?k|VeAxb|sf`f&eMI4%D?{kHcF zAI)>|Y{53)8`e<(4mujy_l+L!&It{K^fJ-Sox7eOkeeqGqh8=m@LauLld%0j{`Bc< zoE_{4Da6RzY0UET8Koq2x6PA zE~#M`yZ+Ae`zp}!X?~NFo({DgZp!a=aPgK_<&vR;RfgyM%oC3kUl9Iojq|gJLBP*< zME;3+2h#E*V%mN7u3m4QLBt4mIgFJ@@p^_DtLL*%MIK)Y$rK>f1hhNP@lR*H%bXdK z>!F!3beZMD*#2Z9(aN^fflwcyF4ORG~t)r77=6C|WouTftb@qi{ zR%Y0>u#l?-$({{rZ|xRE4$bBoqSTjXc9g66%-1Y?ldc51WGjH)?I{H|`UhS7Sz@&B z5rxO^XgD5bLHM%_l640k7(bA&v%J1iKTW;PqWkzE~ejJk%pY zaWI_fa)HtHjndZ5XVqtXwtS(KJ5AGPl$7#@wYKwh;hw1mMWLrOmW|meuI>23%s*bl zl)9skl$UAmsy>odw8@&FHTyR7_NXJ+7Ln?+H&TiJ9*F z-_$mq?Cp)8a?rPWI;{Oz^reBP=dSgEWpSdLEkT7v+;M2-UHNjI0;PgpwQ5*I->Cne zN#H`>swMMtXODv^iV!<>e=P3?lYtkmcrTaUpHhZBKe|LF3AQV~{NHl%^A3+o!>VH5 z&-j|8@}D_lYF#<&Z5F9nAAhP-HuS_YQPZC>CgrB&FF7BCI&L+0Z5%@#FM7Z2V}aV| zbAhIbLjIoD+##?EXS3!gZMRGsa(Y~mOYn8|J-oqXL9n~cN4L6qEzoVwOv3sKSjck> zNum6KODxvqoa|PJMwsti%&8e)lRc5!F@MyihB7|eshN=A=$VuEPX+VMx5SgfGuoc$ z_GGn^P%JXG>nCN3)t8qaWYa#*4}Bfz40&J=OuR&i-S)SOZVv;17Ky&QE%H(Bf!fdb zSOkKz&-RBrHpGzdh_>bE$uwGeoTaFFVgl)#7m$hU^5&-wYt z^MUj?CmVcORHDs$_+9uU6&uloZK5gobFj<0gEzXe5`Y3_H=y-m5UT@P5fM-?1J`+` z3+1cVYALjoNo{ib)2N}=rSGA-f2BsHP!(zms|PvdJVF*p&PHrKjIMK;an5dGZkbSa zu@2~(i6)vXDC&iW&zl@$`HomDL;RgrRLT#{j6>BO5v`$DuOM__WbjJ!2%IM)Tt1;Q zQQ@?A>ajhwW|^2C*4CopFg}ce0W+`#k*q5L-VD#)S}~OYOOPXP&ahPPfC~>mpSINt z`h1@!lKPB#sovj!jh%y;3u-BwKOR3pB$Rvte!{f*`I}Em(0NkmTa_tMPpDdT%y_s^ zJ?t9?%TuqeXt~DCfszg1kToPYz7(bLXTlFrAWcyb_sqd`mED%HbaVawylmtP7i-)o%HxuUTnYf2G&Qm8TgJGjBuCi>t5Qd$R~8j1PmI)}jkG z@_5_3vP?*X9?`@s0`_9lLA9vCJG)0Xt8li(E~E7ylkg2aciz?83smH5eEoT=df^>Z zMfiA%@8+z#uuE%lAvMHwcx)yHZP^fxr8=th>Rd z4#XWD+*r<_UxDh{0<~455rH!nTU%C!MoBBztIz?AnT(}%FGSL|cPQyBC`28_X}DLZ zBy)r&sMIKAZ;3eZ%Umt0yoP{$S~{9+s+InEeNfb=LqYD_($~>e-)qxT9hc^Hz+3p@ zDI=zoN>^pvw8~*Qm_^c%z z&w2c$+pDqanrDu9$m`yopU$JapsL$3%I0B&V&r?mr_Ls%cZMBIYy{%r83%V=|3pL< z4=K}2v;`PN<4>wn*z;=G3ZgE+Q*lYlmuzBV0;!4Q0(3&sb?>$?UCz(1Ri?3ZMod5G zz8Y%=O}1b=0faO8V+GfiW~nSa0#n=MQYGJFYUS4N);NQzeUkPOJF+Drdtmlm{T3F+ZRbyv?VaO~_qecWiPh zTUkHNr$M$|>YP#Om9HniFfn`C%;_+-*10)PC>>hrh>_z5vF;Sjuo-+P*9#mR2~??j z&p+5i-LbT^c^P-hHQ!Mb(Pn7*zIgF5(Xnx80CSJmC+h6>Xt|KOZ>vZ#(dZ(6dEK$E zs`6W&&wiZS@yBvQCX-Y$sm)zgr|S3H`6{BXZEGr%CZeB9&X@yGUpX9j%`y$o>(-*pyK@WU{)f?h1k7 zRi;kUCjTrHs9@HnNl-Xo)Aru+_(HPeGF)qaT8v<#2OQ9))X1|k;>xx&y^?l?YU73g3@ZOoVS#5<#`t`Vd74oh9NEOCC-Ncxhx5#_dx0A zf~mFWk0iGlzEZq{>u`cbN4v6T)D7wC!A;KIdx~nYnIX}?V*PqIwL_BPP^t(EUs*hV zuRHpQx==fo8%x8Y^Am_(zrn@mG#-@n^{Hey7S6LW%g<=~1r+AAFgp`^BL1OotFn)+ zI4mDLab+zowe)P)$IPkwhK%1Z#E1OFs`g$crtR7-<#^LG@ca0I0^yImsD$IN&B>@8$J!+#t&2+s)PaqvTSR0D zp;G$E;A4JOeB7(0ZnB=hmi(6#(CH3OwyZ1vF#hMHn#3;D$Mi{pP-o|j8{2rJf_X+4 z2}jC+k4UoFv&4U!ec8P#W)YSlQ?<__0=K7QCnUe%^JOZNzN>iT#Q7j>I%1w?pJhGb z0G9FmToiUznsGWcDLDI6bz}2qK2S@{t*bnB5jF5e#GH0Rx?ScJ&MKfgVBb~C#7Yi{ zQb;a1VKTU?L}7}(f=pZNW|e&3m)zVfX*cn*Q(b>*?3@{XG<4+qxtA>hm_RPc%!j5) zm2l2G$CGsvqIyAMB)5R~mW$kiKASVQ!}D}UH`wAyQx~;~*Kg{GBf&IFCW@e#7M@v$ z;fQCm0bUM9-tGH>nw{870>>(f?yU?Zrp;B{vHF}Ex}#UwzH=TQciT3F@*8*}d&@}8 z*5+fXlCc^M%-nI}#pA_xTcSjqv1?kj4^yVKi+QISSg zsgP}~;5?3D#wRZoZ|Z!!Ek{;)KfL+V8s_Xnrgpqfa%Cdw?KC=6kzMWNJq{p zfw1bQZz=6-+y)I0VlEam?Ksqm3sIPHTg<%SvjZ54c+;YEy?G)PHaP`!;k*D5!b#d& z7?y)t|6s2>TPNR8W2?M&_w9hRC+Oo`nIf8!M7LLxaCcIm+!%O2F+cf)U{0>iB|Aya z^jLBZW6!V(d>kYEf#4yiP{wNljkFV5GEii@!O=hjeSp(TTHB^5XB!B6Z_yxpTCwAY{eqAkZd;-#Kk8?+nT8YdU~{@tX-$O1|A2N9)Wh)GH?yVoq(<3p+* zOksF9L~~I4o+-UJ%e#!XTWsCa4&n>Pza*3%JHTZ|oCs2ryJ!_2pV}k9Gg?`hlT8yE zswYx2BrDg@`yTwpn&R?h@luF*C2B;FAv z>b+&fJ7>-)fmi#Q%F9XqRDGr?Q1bQC*i0xW3wRj6S4+}(14^t6J!f(lz;|&_l{33u z;-Gbd%a3JrfVWdlonOx=w14%T>xK}2m3BS=UE?I$XzIV$DovlrZu&I7wHrIz{$$70 zOqE1AbM}k*eK;SlT@T%N-l|E1l#m~9-7Jl1bdexqukC2XHsxkl|1kk1njmT%?Ds?_ z8b)tJ;~}caxGAgOaIa}I?&emZSDsHe%buATv`oM(Z3nWy;rMOK%%1p;Ke>z1k*^}n zBx$mjQ559{ycViV+#bgcAFqJ^-(sXuzW;5&ZMoKAxb*3L8~uwI-%01F4rQGyOnT4 z(Lv$yOmyFo84pYosS>Y`U0)bSoPWW{8xfH#*DyF}NStYgZ7#S*8-L{^ONH%@aKSi@ z_bnE5(1kZxA^_PfXX41!S49Cm#j6n{cnojB8;@i7M%so!0glBMdS5Z&;pgGCjgJ9S zRiy%xC1TS6YHwJlTDq3uiSV`Ou>*3euU+XcpQ7mK`M$7fJ`BzySB3Y@GOezkmWf3Q z(2bQ^^vbVUeN9uCxR;?aaMBT@O6$SZ&R~a^j}Gg%tj%9O4|BBbnRHlvHDVtBJknN2 z$vF;c)2nR%1gd98d=vv`R&U&JJfsBj22^W*V*+c4?>BhF^13_Rkl+_zy4VV)ke&=8 z&db-*+qWlh7Z^8IpS>5>sv8sqm3~^%&IYvXcv)D)e@p3FZ8_IKREQ33aPxHuS$*a7 zLOjBDW8w5NlY=%1S(8DanetK_p;W^XTsaoFCKwj@zP1BBwVI2*X{jh zXWD2P86RPbBJ7izH|>(;L=VP)!3|W*Q%zU=IDKdYopa@`tiAI~TB)z#8$=fsI8xGl z$VD)CAi}>QR$EG=y1nvOTfVHAOI0^Vt%ry-+ z{Sg`vRoMFT(F`BeRx(&bUgZUK+r#l&T6DoJ0Rim{TEJvxoNjeXoDJWo%dI&wTycjS`P)bz!sER|V?`6*Z&sjxr+ z3h8lKRx_|jR29)(gfy;sW}s)1O?LA!{Ym%0s<-lfqD<3qya`K}jiS8hc37yG&n>)| zN+t)}aTX&sTryU?;ZD5D%mZm>m8nKPsKk*tU3~$&!!Z*>?az0GuBZdc@X6o6GA%!p z_9q@Swoo@H%Fwf*T^A%*fIpZ#UPSLnR}pazum=51@V+WYgn75OLo{{e$2 z$JG2u3;5V5+(Qz@T zdLhf7o=`=_%+B>}ffM~%wX3V4mA!_%H~x1up|kyuHRZZ08E1?2=_${I>ye3cB% ztECke_EjZ6Lm%jY5LTs#&K9GNz3;(=)l@7{_cP0g@$jv}n|j?B76PhvJ%|_1G%)B( zUpoK(;_+OP?qH(L6E% zk{;&re$3LC(_nXo9fLt3AF(N7hpYGM+7JTy_2)Zv3kzjtkqGD7waV>2pgl0sk9hkk z!%fqB@~W3wf2Jw9DlP@qr8%if@4@4aB$R--%;x1!gVPxsgaIEo2)|t}pq2#LQJ1h# zSh#kPx@~(L&E#|zM7_EAst+OBJRf3rA$vQmn6Ujgwb_gbWR8N~nJ1RM5ue3kYPgpn zTib(!j1@Bgv4dBNg;)8RGT27`O3_W@Wb64{f^OC#XZ`LxT#flDJ1pDU-X8S!t>nt; z3O2)?!`eD@5rA^k`y@`8C}-Ljm2VPdxO4&+>o|eC#tb*_d>G}+Q+Z$<`aCtiDSH#| zaqBRmpPUf;Xm0M3v*HQ3qj9~^8mA{|Pj>FWOTK9KPX9#|=D1u?X`sI=&9%Jy5mgVG zmM(krEz(8Vu#rU&0v{Qq1S#$$RecK-F)zAX!Y4bC&erWqg6-y?Txk~|5j9QTc&tG7W(%h^P1>r+!&3q5nV%-nx>SjyOyfdwT@C!>+lNEHx@d* ztp0akf%3=xj7dcQ>^qk`z_`K9WxBpX`=5`8%6;oQMgZ`9lUe~qw%qF`Vb-X3GsGNr z7i`S5Lod*J_(^SLF~E-qp5(K6INf`5X#P5Lvat~Zvy{)i^yDr#qS~J6Q78&(ugLuv z13B+qC_yRQ0~t3|T~{r%U(CheN&)ie2gTek>6V3z8mOg;W7P@TV@Ms1FNJ#F)vKrA zGmF$$)T;r+ohx&Qa<=(g>IRT`>TD#4_iFer-^-)^Wp{=!*&3cmc;uquEMMMTk@{yN zwMfBJZT8i*_0FFBHDqS#kq|=RYo;qs#SxdA*zbRkZ>{}AY7Nzl#}U?2SESNE&P%*L za=lpd9R`67<|!&?W09PoB_KHgon6#CsMy|6c(Lm^^=4*gr^XN9+&2fF zhRP)$udlD4SVJLR_n@s>UMD5xIpiXL=?uU?Zyb%l8+G1|v3V`D-6FNs5}t)zmc;(> zZFj3mmPk}QjfCxPa_thQzHVrW~?(FQy_^fbBNC>Ix@9yF)d$+Dyw7xbW=XPa_DEJDz zzdPThp%5SXEr|zY*B}NB5?G9}{gCbffiY~p@Ms1MrNCoomx+Ca@TF#aIePSUODR{y z=>Apuu>Q!w9LEihFZFWI^rKW6B5>UmX!ucVE{jGjyoWIJw%fwd@mT_(t9FNXWT5|+ zbM+oOfk0T_#z7u7g{DSJUA=u3vx7hD;^Lw=W@l?Hh%(PN5k?(9e%yO?ATBDwX2u;5 zUd!?)k08x{YP(o>m;)$?>H-$D+j|rg;D4+*_+OtK+gB5=)84>z9_m_j>m+80Sem7W zbgP~_iXH#zKYS(cSzy?1;ijB-kHyf?kl->KtIxI?Szh71CMzQVJMZr4c|%n-sE9;P zz?tensE*AUsEXK46Qn`3|OY+p|)M6t2Cc`8ucYNMy@ zWiaXdUPxN{mP)0_mu8Z3(a?@zIyY9^-`9s z=NB2m{`hHZ&G@ke7`uk1X5BnQMBm*g*=KN|IHAI@O^jTO=_mm6tB<;nMwwXuQRi&T zJfy&^lxB8z_EzEv7@V}ns+~$=2byED(ofEJB{v)g>B%}QxXcdd-Ap7y&qv3s--8V_ z{yuCGbKKnAUYA+Xl3&f!v}gR)gta?_DmfrTluFq^EFxr&#YP^t}HVk%d#{Mbu|9jKAa82@=FyPS9&tQ4~Wt>3K9~mk&2}B zqF|33}|9Ig|8fWGky=A)ANX; zlP)AASOJX9cIUv5@bA_)cJwI|6iK_!@H&6|`-j}$iX9bLTR*Y8Cylwa zs3jF4MbwA_yo%0aoNF8MK`zzW?P*}L3?Z;av-5(F4-*EKgA|fIa6B7Xhf*+^}Jo8(P zvzKvI zm~WoZ`H1B4#S8PbOmrmVIW@%9VP&sciM>Z2A1xAP*~) z=-W4xM4WH8t!sZ)RjN)?mdPbvsFggd$Ax%AL|Pw@D-3D9_IYs;NTvhiY&2B%Y`HDy znI7$2|MV08*;VX7LW1-IyTEr3;MC2`XyA`tqFCVApn!?1()mf`%6Eud29FD<5##x3 zfWF;Q$%@x>RW&+=N~5@e+W=4fp(MmVl~h`c*CVykoo!psg8EWj2K`7{>v}U~Y>+ii&r-N#%8RUgbqJxT(bC0Xni-N7tBL*3ljx2k8V!-mv=ke6A_| zYeX!b2f1TBwRXx}Hv(H$xG7I*T&N<=0{2f2!4~*YAk|;PytExwY_hyLj+)P;#g&z@ zX02KI$P+(4RK_k&*Ld?mrbwPG0rPnW9uRMS)1$Y6+~8CjD&`DK+RWK%pbLoIpAJkc zgQL;|@#`WvEb->mbS*u`Uap7BGP?w?xbvFu45IM(s7EZN+c#^)hBh?JEHQh3B7Kqo zSRBr*+m6oiS~`ZpJq$xq&4JZFDhXmM*(bd1V{JOS>?xPNR#GU<%ukI&Y>mD>ni1Mu z3*(%id2LtowZ@8BL7`hfSBFI%yT$3_V$yOb$x_${`|>!5{*>BC4LeJ?53e$rn@PIb9^XttV0Vl`=z5yCMd@t{B;@fmv{UHmsK!VC548Z8DF2C}FQU<}%)a{&6 zE!Ee`_1qkL6)k`g*wR|ObLT-`({}Vca~HY{m^G}Q_ZA6@1Kj|v*o6(mgqL{&vNlXj zPcQ{hzuGBfE)Zl+EuX9;-;q%RL>u^{AR1wOAYPpZ+{(*3DxfknpGWDf#p{!Jx3nb9 z%iBLlWFPA|s{bjKpJ1|{$j-#=iO*hqNfGKE=D$>1Uwy;N3OhC?m;bUg~LncR6+D9qliViLtS@#(u z&VbeAPyYnLuB%9zy5)opd_Q^ms>V19OnxGw&Z+wKMT)*Y(EZ9;S7lwY<0PjdO5Mfp4#@dWD zRuTOf$7+VDvBNMVYcZUNNS$@M%nG*#9HVIES&nv~=EPS%$mH^ZR(wAlFpSR_;#W;4*s8kh=qz|XnvfaB@fHu;>TV*Xt z%oQN+w1Rj(k3RzyKZ{5pR}_mqwRwK8b;{2NaCB!UYEZr^V^Caaub0>Zq^9*+a8u6~ z=(&&_2ny|y7iuWmHFy2vPMd1+!`9DGRny|Nq&Lo^vFMbSvKZfWEqcuF%TS}pty=6s3(*B{2tID4ZWQtXgXA^m~@ zp)JxR8<#O?dP5>!%JZ0KM%Ti)zM5sciEhf&9Z7LaCdsmgvtCA9mZ> z<>!a3>%e`x>G9QLfL}8_Uv3)8Rxxac4;PkRR0>|Jb0VJdquuKwbWmW*OrL)9<&3K< zD8+_@f6&kudi&;Rli!r1!{6RdLr1|0ljBJZQ1F-G9eM=V}#j3A(-{ON+6NncQaD z1AMOePr@`+_5fTK^smwJy+*g&dIGprYZbcbv&9A$QQerW=%3+Aa6BQTpCyTI!wQes zNv^n8cH~4-i??TfoQ{r=P}P29se?D7223s(>{$Wq*&&{X&@+13>M-SwcoG$tY*b}y zW|AYb*jR3ek6z09p;jnN{S6DVEu>pnO_La5-AWg&l2}!%L=Gk$`F-~=FEO0 zCB;EgU5{fu@kqB5^Zl3M7t1|RSr?{|>}l!mofgfbpF-#6Auo?2ArHbr{ZY8QZ{D2b zd#PdWZXOLn8eE;-WlcZBwfVJe6G*f5&B=C>B&Vbn&~%bC@bS4siKnW8gzu3+m}wZc z5i2XM@5AoKAgy6PcCEg(y9NJHp@bJTykZ?sbx7MKuZy)-&L8G;w16lo@}5+y@MTrY zN|;RPkJJz-5ksU}VoQRZYlF<_GJLIAQ!UcobzivqTVVW0wv`>z)^!7^H+{P{ zm;bFW(!t&IoB6_wSMlYPG`?p~znS~zM7~?&RTy8+rn_rH%cdlNQDPvyILTrU^+l!V z=E_QH=)$<6uacOSL=8I#c<|_}v$oV$?e|D1zqq#h9AzPD5%N#x6C9NC+WC~fc0R94 z`_0|Guojc1#}*->#K>a78bD3x?=AG*D7TCT@!^q5**pjec8iI4GeEXTgViXWTWRdV&-z3GEY z@WhRApHwUGWtGTgR$DXwFNu?#>8BoCCNg`SpOC>FUcP@O|7*$^)5gf4EI!cb+xv=+ z1}_r>bEW?@kGmHC?|lD%dp)A?wVN!_WfeUCQY@re4%uhwG#*@%qG5up#qFT8AR0Dy z^pr%jR!nKgq%F?x@3s4e&m@BY^1Sw3LFjdP8FuHc^iFwTwHFaNDoC64NQH z({0O*SJRje2AU4=KCLznQkS{RdW}y+vMdX$(?0`PE5Cymbbf!YtWUCInO;3o!>Lq7 zUXIK#OQ8_IxScBS{}ka8oGyT2eu`51!uU}T9}#r%O>piQ?(nBz#jRyP`^_T~tXmJg6 zsMEi)%kCGzF`u0(V*l%*I#Nv6S2N7HWs9SwY6R7G2Bl%8vfFG=;A9!{1MC6AP{WSq zg@1bWOY*%d!{q0aXdp+`O@I|a#lO0utoLH5ER@-zKsSyO)OzZd6Wpj{M4(M&Sl{PR z`z4%#c^yYKJBR*xzNV}Np>*t{Uly5rK03>s>K!vJnosW=nwH;rH>OFM5laacG^#&C zYGMJnmyj39QotQW1V@Ed@S!a+=7-n%$!Y+i$WrzbvEsx$F?o3J_e3Yw5pVbOvZuUf)U5KPEX^{@3e?>0(e{ z4y|yrJ!Aor*x2mr3Ob1#o!S)`KWJupgc3sy4NqQ1m~<6TM>^1qg>5dC^%WuqgoxS* zoJ;Rot*VHtvhYy3IZ-8^+Q>6+{ZZX*DeaE5OF6$u8#N>UUR>NV^KNF7rCHM3+JP*w!^tMcM|7JhQiFtbho}VVo=3jZ?rdkq=&T&sRHZX$y zKmRMRn5URc1L9jd23R2$Eu&B?I!cUd%C1+7KBg8Cq=2`vYD%v0jTe$oH{-0HvANfu z;tn|(XC2Dltm!=AMF$T~ zruvI>o?YpsW?0%QER=2my>xg~&Vv~$CydlKR^XL6pG>nQ#eAr}dsKOWE@$~2y{{I* zaA?a%czwteG?k32 zP6RBXfR1(s^MTK}tpU2>Ger+-QU}l_Dg*RU?xA{daM5aY(&*P%AiG!Qr~q;6fwNIi zJ`QEB9BdJtsfxHh)th4kmZ~o^KQ9PwZd!UtQGZ?jll=(W+$MK_)+ge{y0UpPZ*rZN zm_PoRpFpJ5B4JrMeLlaXKAV84ary2NMo{x2911h~-VOnV#{ZZh;C!MGLGT-h?Hi5n z43cuEA1SXZB>s4~sL}$nXt}QLBQ_z#cxUH^pswMimfoVcK8o2fpwdO&Xo4pgAFESu;1-E;H z80UBQeswVy*Nm*5yQq^^q3P&nbiz8r`f=LCMv+N$!%qz7p&iek4b84bXdP`^Z|vE% zt2#?>x)zYByPi76OIIIAPyH`TlleC`Ue;Z7(h8`>qZ%QA2PJ7zVOj30G&j(W>4bG< zEcAN=<44=^A+5!EEkkv!ZV6!o7?Z4=KCYcRxXjsi2Ee+uv27k`&*!Klp#C#OnJ#^i*WFA2| zP-Q&e(^JovvtxSgyTcowbHCzZoMHV5*~K-D==}%&@&9d;#Fn0(Y)|)0qmQ{*sZoC0 zON=*D`u=0JB!I6poRx!o5#QV_z*gAVMQq&aG&m^}xp<|GLTFC|w09fuSzS9=UuQ5- zbHM!KN$Bn(c&^mLB`ia>O#MsUVf5!)Dop3kwG0=k9w{|>a2sWv3RbqJ2MoW9RX!w? z$g(W)`q5H{*H79IL9rfpir<#d(TPU*_B!^)Ol*15>N_$POe?4$Aa!#&4$YF{ zcTipU_l3M{l#|`CByv8^hW*2Ie0uWw2CnQWoJC~fSPc17NY43l^`o=tEiQ#nM&R-$ zS(D6r)5(3@Plxb@ry|i(2c<>V0uk>SNs1Kzvu8H7ORh(T!poCNG`Vp3(jQ@*&i@X> z%OId1yOXj{5_}qdlOw6GLod4NV>Wb08^I~|J`6t_K$5tH6q-sz-` z>B01ha^BRwFuLB*%@ZA*HBA^5GqjpMzGPU07Gl!xZ!f0KY@JTyOHkEOEaJQPFkeF1 zm(%K^XLR@@OC7^~O5NTtfQsH743?CCkE2P|MlBFe2)d2OXX4)HJR!@{R=3usvAkfq ziu~O>WrCI0CG)bk3HTFK&dntFwzK10V4TdYb2scStKNZZMZoD`i+hQBVPmzMT#)m5 zKu&Khs@?J3HBMAUnGgb!>R@uVyWrE2J_RcP09+M%_};sElf}P`&7}PCTKG$8=MwfD z_qSY89L8^d&p50GVl7y=gY2-1H{XWd~;n~EL;)#$RKyk_75s= z&wrpaj@YZv0>20LK5WziIJ#%`@Cl1i)6K_tXFM}}uKP&@>vIefDFsXaDw=IaN8&Nu zjRVWOeyZ#&jLNL%#P4xQ(wI()f>*4_SIq0;wP~%Cnt3S=45HSkM&)*=SY&S8{y z)cTz}i?te_md%crec@X9{|)rVIA4* z_Kb{E_n)$d7uwECwAS2|Q=cD>On~Ut2v_!0WF?5lyuW0x2CsFjh1a9)pxwu0heki5 z37${DZ~r7wnUXa{p#R$A)W>UY|K@JU;VIcH;)An6)5Vp;)5Qu^p*H`slf{8crL1lL z@4LHu8kz-a4vr;xR^{%?X39oKcEodDu>F{Y{x>eU8_k6qm;%WZ6tyAT!_*+*7o;aS zYbnC9b19~d5KDv-Z|tM8J%*^L*fzbD=ugZ>`afGW37tng;qUI&P@S0fu^21uB78>pFt1LbEW3+O-z>IY_nzMd8dgO-BzNl zZk7tiBzrjlaIi%mFZB<9x@G3-6&OBT+dK?W&yTWrysP;ATh7csLAr#8abja351)yJ zDRp#u@GwEbOJ_}g@r!^%K=rV9@$}G|7WH;^soXC7NyK~VlW6KA%rz8Z3Rsy;($Eu` z9Bka4!#YU)(U4}aUnO+En~F)$BzSpd30vOXTt&uu;yKCSIXia349aPo5v;E|kddn&%MH^HL!3 znL>Gw86l;M^VwINn$QmDm6`yg^ENw-;3A-2jiM~MroO;GL`&G4LoRrHn{V@%{}&U% z_Vs?$g9Y=@2C*hmgt3_OiBS@czZv`LeHoPkzPWm@c_!68y0o_^C93FM)^8K^A_%6PBwML~S>%kzi2P>5xA{EH)57D4V9*wOwW} zf)y#>WFS;KPMoh_vWCbw(cR$Mng_c>wLGXOV0tj$4`Su^$^A|MDd~gP1nvJ$*vF+t zpvG21{HD^?g{xjF=7P7#08XOyL%tmdIj~p=t;Kh#b5S>$z)pNf>EymrmCo9gklgEbJ9#0zeadb~wf7=!c6* z+zz_$%%94gHk7G;yYZ_J?cXtl+&4lI3R?;Ooav3EN62tPir*xQX|)4_iS4~p zCYi!_mb@NP9F}R0vLYOHSV36dT!PThiPjRal^KGIOtg4cV zV{Z>ggPi9l1{bpioy}j&FtUZIsNnrcJf>utJe#(l6P?HsyXR?QycXYMYRqtaViH2A zH4{-r7LanD@I~drgwjhh_=jbRsZ@vq4AUuvJSkcmPc+kSEaHdV#82i`p+B>_-L7(L z&$brc!D84`{4o1->fbXSM0H{?z}yP@=zY2wm)|0HusSGXAC(aX^#64C1~qZTknIQ7 z`=un_&BVI5&5EB7ZZtYg*NSobN;x8?QTFW?T(B!PL{Tz^v2x>#RgxH9l z<>}3?xYP=PB9Wr^9%^UldQJ90#EL9Fo73e!UC~Bmo`W}ixe0G3jXue${%vmZ^G6V! zvug?)$i2;lk*v0o`MfA3sqz~RN9BKyI8WP%+ezYL;zp@D{}$>Snf$Ixls{Ph8;XjH)gMT@n zu#vOyxK@MiL>_xhm<~nY{QNFJ&Poi2+rfTsvJ0%&57qqzZ^n?4u@6FVD9?#Sz4>>~ zTb|nAFk@oFqL1;Mmqpn+t;xdNu|r(l31wbLu9Q@JLe$~yGbwBdqG&BR%wXcB&Sc+5 zcWp(sL7M2CccP^VLO^;Q!BujK84s3BO`65X16j9q|@IxY=7^FK(_>Myh zLQO&aEF1@s_t9ZAeUXujIVe{Yv&3|a19_H59KX`!m1G;M(l5{O352XxGaG()Y?hbf61f3^uN4Dt*&B#nCVT5ZwBTt_-!3(ff%Ngtz z3s=_!J`e}%hvXx8VrE7JM!p-bSd6#NBCeC+#z`VFjuSt9JUfAkB+#QH`j1DDbmCwy z3n2IY{OJ6b$9&_O)J-YWo;{2O7_&*ONO60@em3|bU-bH9R31P^=h z;1AWtx_8IHO&)HdK}I7#COD9KAL2}jQF?JRI`CULZ63V$o64O}wm%kDJ|i<)()JwT zi0yn8ZMx8i*(YSUW@Yp^Pfr#l+X@S(`P&6wm}2{=y?<8@GOguAi+(Wc1`eZGTz|f= z*?NP|YQaFCZ#nuEOg%EdfV0T`d$iBsJm->`wOhJpmcQj>ptJ_F>%-xfVa|UGh+inZ_CQ6_iV{b zLbtG%lWys99*G$pXuUY_Oz>I2*ysi$+jslrYMNa8ACqBw z4Yluw#;vTKiS@`A-|u^Wy^-SEYtd!%f}M6$q&FNl_{-UyK&1Gi9FOV|zc5rXgbW{* z``frzhwe_0E80!%f`;cC4wd$Zr06Sux>pIaZVSmL^7%LrHF^^ zsfgBXqKclMJ14h(>!nY-4pRhUX9=SxwKl(dZfpb{#u1-y&iq|pY|ZWg99`n_9)9?9 z>iD=(=e?)qxx1lO6G}aecDuP1Zqi-%@{A@DT?xfkj8+1<&NvkQ5@bXb<+y5E-`Yp( zOvbkcS*ESGnA=bwSylOXFb-U(7D=ZRM{QgdMp!L@td~J` z)?wNcn;S)}=UuGO&lEzq0&K_F0_`0MU5Ikx;w_I3%iRxMzpY_%97p5{JiBHtX&UxE zwr`0zy~rjc?h#InZqWF5k>A;l>&j#-B5NBJZ=`01_i|cLW_RvjEjL^!RJ5F6E#E&$ zFrlankKf7@NwwI?^ie0}Cu&^d#o)L&SB}UCggTJIzg%^m9gj7dEk?;Zy|6c$ zFS;J-tqiO~pe5<025Nt@^mJ$KRFP5i#C(JOI8lX}Mx|EJey)Uki8aV^>>`-yVVS0W}Ol)f>}(*5C$8oPc- z(d`p5t3wBFqr|Pih4i4=`N<55?o}H5<%VYt9%GG|Azq-vj*tea%w>TOTCG0ZNPzoB-%T(+qxIdkNIM@X{e5Asz+ot>Kr32=uhrWXo>Q zAw6?Y29wZ|2XtPGsPZo3TC?gk?Fm#Er(vfVZ*eupTR<|>h(+xgcHjFH!2U>5)Hr3m z7na@FBu~Wo(T-{I%sI2q|LX!$I+)P#_&GO9_M*^9NTnEnm)KhNqtli=j?B+vfJFTy z1eT`qv4RCZp#2&>j=)AZm}ZvlC5QTKc;28!?92Dg&brAHC znQ-X-US;{)1iI(_r6yAvR2JvA)Am{~(|6+h&Db?NN7SZVC@pGNT`a=nD0JrI-HC(y z#{5TEC)8Q$B&@ptxkpw$StgD=jD)~!Phyblk@oLI@Sah~T}$uX;SQhRVpAuC&S%v6 z&fJw5VNmsB;y8>YN_zozKe&)uC4onP+Z`ZON^oGUNVZiz62G}cIO+s#2mCObz2!R- z#%MNY*bG6xyPlg9oLs1$9fHD0SMPZ;jXoL$DaG^!P~P}oqI&GwIG9|D;2w0oM6g$w zcnuD`lTqXg`-|PXJ0aD^f(bBwrtm@Ed6q1a8*hm}8z%;UnC0oOmHb7OHo+ARuU}(4 zk{=F?cQ!-CdolyQf?CG9i{8XMK4n)+^xfF2p7ri`)@hiAT2RC$r`k>xWYe$Qj zx2upPAipn+zCzXZ?mi_RWJ2Yn39_&shuoe$Q2%r~@ge1)w&`5vqK8ws@1hJ ze0L{9AHunk`@jHqNS3nO>SrHb=3XWlYQX*bm*Qe%E#BOad>j>tsdPE?Vux=PE& z6umHD=5NbjG~lA{6~yW$9ryj72ToNGRE299;5JLmj`V$Ta*ITjPO}jYeaFH;l5+pn zo)bkb{RusU4DE;2*^|1q6`#n^TweX>OUha~Mb<9OWzn59U0pA3P{m9!)mJH5)x?dx zjM=g9gx(Nox3=nEcI3EQdm9j+>V#q_RTJuMy9>1rJ9XIPG|%06aODvH5}tk`ZclR^ zH-805ri6aDE9M0AVP2d1EMub?t4LK?Jb9qQ#Q^>sg10hh5RN+%|4TmytWZk{F(2>+ ztfEVP(v~YhMuTD{_;5+)dpkzEeU$ap2_% zo3rmdNmRYBB}uzZM!4uI-Ah#mD`B!bHd|Bc;fieKorNZgDP-79v@nd znzZ1i*NbQ)e&)>fd(u@#4cKC+vPbuPgO9YDEe)})HAd&`k5GGY4_uNi?{Yk|PwPj% z4#ePJ^J~F~+Nd{vFQnoybH>`Dv@*{X(Vr(C_KI^0yj=m>d{(`xmR-o_E0{{7lE2kg zKJdAtqw#7ANY^I#gYzoM56J>U1dU68ck{WbZ6hW8_Vcr4nceKc3_WjYh`lfoeuS9J zIHli-xK5I52l&(_RUr2z!p(w)44=-Y+QI~U0U=}_QeQXKDoj_3iRS(kXGeBrEFqL0 zDK5fG(!sN4@izK~x)A=F)pn|KSXpbGqpvdfVhCE-VC#5f2tANnE*4zL%{py?ZzNMr zGx0%jjD+?J)LCQAw^aVegz;~Er2mby0r>jwE`h4-)b^)die|RrXrS4bux{A95F-fM3d8z%N!o^g`vKN6UwGp;8Y#M8@4sPYB-kYBR&cWB z7;Q%1%W~cKDX4;ysVJ&=u}rC~IZZq&ZqkZBnlL7pPz{2qU&4w1K9Z1Yj;-mayORd9 zT89*P&X7HM_Wi-h>Jdi!{mvftNO1U!Z2pH!@2=@~U?D-gRIJv>m34-N7b^3I_4{cF z^!1M=QJEZ^kWWCP(n(0D@&FI3E#jv%?^&|f#=&Izaf#7Xmf_rcEIWK>LLzEj+!HZg z+#UH;mmgabPfRxiBL4;M;m*5JWn*x?phyHJ7DF~KPQoqaZ@^P8Xqx3`s^S$Kmgzf(07Kc*}@yU%Onpx9=~GT8H}4QJ3v zRgt&qCTLy_jnB-oC!zwxGV}$cXBlpKKQ*g1N4amFkPwx93k4DzZu6mh#Pe6_HQRIq z{N!|Knxt$+UkubaLFa3&+0Bnf{|NJN>^11{-JG~467ebM>wgRS`di6Q+1zMboMg-@_;PZAIf;Hg z7%8cb-_+x@!CuH%T21C%g_39H)`p$ubdwY9c#rdxAL(DFTeY=vgMj$mqe|(5- zaE(rvwAZmm4_USt@6ge14&2qHv$8zsBt)cWaxBZd^M#*X~ zmvB(z5bF8ooxg(v?K+~z^C$qis<8rH@}Ep2i%{eacq(sB-*g7#pBe`8bgO-|J?%cc zcQcXAq^X0NF_Ha0a3w!ynM4y)!!Xt=7o+JIKm7PI!eQwv7OOh_v~_&UhDSEstbl9+OTUkteVb-yo(#Dk;!jJm~muP?R*I z)A5-?(#+d?JpsUHZQ{+VI2GN?17y#qoA9&ibMHHhpCQ~x@l|#T@(cl%bPQBtZpb87 z%RYU9FT3hGVT6uf^kju=3;ij=W$+(^%NwZ?5JY!~#W_B*@bgoNsa)S@pS!F~^P#GQ zQesy~?DEbs!?&x<4i{J>+>zLRZRvi!U6(91YG?7rnHe9)Ti+(na`z-TSU!G>#aStc zBtw*_S5Bqtj2oZJa~b6TjM_=K3`ZR3tI(oiSf1$ccrl8i)_^V(|5e<3>7%4Stp^Ya zkh;?20ZwLOyrq4iz<62BS<&sBXUS)UbGO9-Mrtl<+vVbaxY6cc+K&{u=PaQ|%w=gp z=I}a0Qa;TeXr>P6jtg^qDjNY=ACb-?V)n-{!!lU0NY&4J_jjT}zIq=v7emA7a28VT z11p(JuaCkHh~Ely2#w$xNpT-+iaS*c#;y2VQL8qRW|n70noxUVVYBNf*!j=p7q@l*rjSrPtn(!6|630knI zcfOU5U=Pdyozt_<*3Y?$eftI_X1cj#gZvKi36dfg*5cpng#t6yE&pT@{UKK$H>;E4 zVyN`Q!CvLTjC`{C$Wz)+6Qfs)rzRnceBRRNIVbyRv|^nnwow#w!+oLop6Td|Lb|I0 zF+`#vEME!Z>jWu6{KfM^+sYLu_aa(AmE)*{{O2tZ3Rlk9u)0%j7AJ~RuOs)i>vi6P zW>Lw0dGDWFZYS8AX0d=glhddynAdWZ^mtJ8ui9TQR8}E=HDLa=+hp* zh`dt(aeo!29DcYpTHarc@TJSZD?dq#Ks}>0!J5muput?p+ z?A)lXbC1aUMt<51e3ux0+kLiJ=LGeun}il%_{<+Ci_e=y=3fKO_VoDhs&s=|9e>7f z(><6D%?>x6C-gTlRber9KE7=od!hn;C=;xyMwF^9YqA)|c(r7sKg-4TSlup18XyVt zNS1bD9^Tpy-bm4SUc3`^Tia>6iu&1f+KueAH;F(YaHkvC^#Co?tcdr0Vs zP74{n0WL9c*O6^bohP`O}RW8^mc zc*I(vfScfX{d_lZl4k01@iFF?KdM8(p|~NQNw~$DZ*ZlKf6h1=8pJ;|N8|8^(_FBp zg7`IO(&9MM zs3{(f-Ym5j;k-qz1U>zufkNN94-y~YJbn;v*{$OlhoCj$mttyA zYKvMx&Gu(!>Q5vo^$gQ{Ay8Tll>X_)h`we)8sr z73b+6Trm>E<+_Rc1snX{=tw+$Sbe&AAB8EGhscc_AbLY2{=$eISWvuvXf%pdYe5!4}Bxd@aNghbEB`G zVIC5)!~@FODT}Pkg{5Kh@mDr8#-;6Cf(rj{nN!g$Qr8N;kDD(ww?SlP!HL|@)2RD@ zohfp}UPLrhFba!(pHVxYnuss(1>9S;KS{>dEcVw?q{#RkAj>S3s}mu)Jr>nL>2cK5 z{%9|a;>eN(oZTwl*!yb@_Dtv34$~F#iH*wGr7UHfnX_kUY#ykg zPNS0Z%*wZoIN7v!k#oS4QS8lOzMJR#(cw8q)9X_NM68TH4)a|L`)@+M7(v3AYvN64 zf9;3N+*>FF*6I*O9Xlv`pJ&eZMsK%3Ib&<@8gJ8O7UF)0+P4gQ%pVh_szwaxjQS#Q z34DATh}w17gVK~0BNrzBZv5eoUqo<8CJ@p-=mr_&DFNE(z8Zq1%9B2)q*z`)5ad8L{ zC#FR$x4(eE^R_(bO#ORrd>#BHQR2^nbo(~Hf*uZlKtBnGznfdgjvx$KD|flaaPfDD z*b<1Iko@=6h7WTD%o)a?p6@XK+mIB_ds4n`hM>~%iW>auChrJkYU=7#dLQ&_q-f7l z37{L-UCJt-Y5t3`>7GXLUAocxR9Z$JVtOPKipd^}(Yg=53AYpL`%a#zmbC4;cy|5I zbB3IJlm^irk+)mx`zTW^3H$E@kaPpOf#!X;mP_^aF8gzJLV&2+YavJ^BCME3aiX8(Ig^`d|MM9W8wWh zay=!~Vv92^^@y(0@`ucqF1vHvipL$^kwSbd0N;w7B?;Sy7|kot31a^g!_Vl-VIJ$L z^zs*ZWGhDlteby`fW+#eyCqRu)rnbO`+p3lKwp*L2cqmtzFR+v{r<5NUa8k4<0U`8 z8b537&C2g)2Ej1L{~>%H|A+9|HHYG-6^uFlnsHUXY2^I>ag92i->du`U8@?f8sRf{DQ)T0{A8ly-eY+9F>Z=&{?)cANls`*vC5;^O-2Ne6jClW+ z<=JjJ{^_$+ZufjADti3*DU|t+JQxsgkDNL0n521S%W*zv8zI*F;t?V!f8<`UOZ5G1 z196S`UnAy9?wEhs0{cI@pCU&(zKXg}P6*Vd;<5GDAVKt7Vh6c&ElEoDE&3Ju{y~a< zHSY8}7j(j?NiSD*a&iUjr<_4TOTMoOTh3m1@QPK^>H80vkv}GYW&1yjjpU+9w-WLw z(R&!i)UZ|E0C;2-eB~!z?g(6+PhFV)mC#(S09`cjzen3hT|O)`-# zlLT0moBD@0(mwm}QDUvIA=!pGPDq#afIlO~IT4jktU@r7gv5sUBz7!;{pw{X{g$8F z=+$}kf9GTXBvkzTUry9(wxYK)9sl6A4@|m>s3Wfnps+5O=G;0$l_Qf6tbGG6`g^J8 z2e|A2_oeQ}{CS1D1|bsw!w=cqQb`5BswKPs9n7?3rnTicni?%5y(ZulM_6+^FX{eIHO}%aSlIO=H!nwI{Bvax^wApD!1R1N zOMy^R%8wsF+=kvzdbx=*=sEB{!|;;->njQ{1N+AVtbcV$_)3~8f!xe03!zQIB#f*i z{Q1LQz~({>9~u-!vdP$}56La|UlO?g0(sr-@oJ3aUSW{$LESdZR zTm}1QuO`<2U-Z>~E92FIl4@Q@5v+WYUz{oPx%lN(U9Vi1w#6$NK+0Li)NukZAn6f42566pBt1Lf-h3NoWGbC$ z8!KkjR`y28b^ID>r)($@8kYY;SirZSFUEWH$O3BBvGCZIaCWQtzet|#Y z6vQ^VUFRIkDet=Z;oC#4sae|H7O!@$UexHp-KN@Jd`xY1kv?E@>65EB$L=%xpg_bJ z_kSR~wpcw@X7$Cje}3zv;+i-7AZvC>I*Q(Tz(s|`CW$S@BK9un-`N1BFk;LZTf)n< z5bxlxc2=D*T%0fV<|(8vw*b5d{0sAOos|EBB*niX=cY?0-Mw(=I%u1(spIH4c?@)S zCg&nHkpOpO6)g~L9`^i0z0Ajw{SmuNRZcpk5ptCE)`q8Rb2(Ebs5A%~VXX1Fl8s7jt*q2k|zivRE*fjMQ#V zfCj=Wmf}hdRf}r|1`OlGAq(8(bzf7>b!T2#%+au$sgS#ylgi4i@^kx2Z+zfSaIMve z7&_hr<;w>gT7)=!AUV9%GkAcD*z*>I8R|m6h2%okZsL zbE}gj^a}C+4nDF8OJyyC_ffQGH;H>@pSu9AB;-Ntv4o|{r-3G{wrS+h0YxYa`FjAl zA=_Xhr%4jPFH~7yF*4P{hP{Hb+G}dIw`GZo6+aAI8A&Ji{C{!Oqm~BfHgD>CSsF=~ zu2xS5tD1#iGMdZdA zVOdj-8I_8i8x%=KFj)M(IV6F$R#wQ8C-ed_pwK?F^Z6Fc74M?D#LWMXwYQ3jqj}rC zg9UeYcZc8>T!RD>+zIaP1b2tv5Fog_y9S5gHn`iM0}Sv@p6CC*TfTj;5B6Gf(5t&w zO;uNS$yLAWEf7bVW4<9fm- zWp%AOre;)hf7~zRqG1P|Hxcu6ZQfTpxwL$>8R5%wc>HPV;1BcvB9eg_a4ECGPGx0c zsk(gaV7j^FA&sG`x2})2Z%nPBW9;pwaYMtlD24BJdfvuQ}ZabJXH)JZQExEIl(^Duz2k z`Lyo7H0wKQ+eJDfd|HOl#JS>JMuco*Q_`eHG7e%xZKK3Frcxoys(TMPNuz^^qhv(*?TCc99pn>{{f8^!OPi{uxkOF_q1$nQL?!DFm&#z#JBh#flCl`410K%Z zA+^%zq4WFvW~@@u7qC_r6+drt*n=HU08#(VLjkwxhMi#_qWuebm}30eTHMucZTpoV zupKCf^>1zu>J-3j_j=GJ5s}xQ*MgT~mlFRL2qB0gUK&_}M1pXb-Uhi4x|Fz-`tJqR z;R2A$xqq_o(!G_68|^ys?H1;fwzJC?n#6C5H@K z5a?0l9eD-rE>B?TlQRFkt14N?F(UOI{YW&#;AF)`wj2wp58z^bja6v1LDN7`H_tWgQ$9JOO8 zucqX?!&eZ+%t(7nkW2J}Rv+wE9rB%Xlqn@p7E+4k=;&zVVx^3zNNjp)78WJt1$rSN z;?t#?fz_sf{O0Db%Cr&9@f$l1s}%Uc{!R1>%+h*q)`V<(S!4^uxkoW2)psHB;or-3 zFysC7Bi-OhdKz5Kf%H+zSIEd8?cCXzLho-Q$$}^%nk6M9_*k^P;U$739rs2tZ8tkH z52td6?vNc)uEicflCH7Q14px_vn49zdk6bFlY9oU3S(A`Jw;9)9wXQL9`ZLe-A`QQ z<>kK~7q=qmbBDL7!><<73`ZG@+pfziW?NLmgl}hHoE63gq+iBT9~5t<#ol6Q4up`E z^NqLTM{i{K;m}g(T$GLusYL#G&{UBb+Eym2$I4q2IPNCu#2jr0QIO-(arLN*;d;BP z`70-=ymSZ-OiCw!tHkwN$xnh_u9G-<78V>`T$0mBf|moJ3|il0CbC6I{}7k_Cg5&l z_a2n)uexHHi#jzsJqSeZd5zxeuXteX9TGvRGag{X`VOgU-lUY2kd8~8!20^no%gHb zAm9jjLS|-E(i~O{A$OQ|1n92C@K@tx7T@-A9W?=m5k;{|2SSE6p`41!609|4>y>WX zwdn29EH))&{?S4OzWc>`V0-(4$RPtJ5m8hIH+xuG8a*1BFhj|S%Xt&Ba0*Wjn9oIMVn;YT5p^HDWKXM}EJjlbK zI^9p%4a774%;dqgCN;T5?+2h}4An?a>OddWq5i zr1sUcv?vaF*-`szbXzVwcVm}mX8HV{V!q;j*PC$K=8KIqR)06l2hA%s>GfF6+T3;wJF){A;7P*S;UE3Bn z?K`(n0K~>aSJXtOclL6(ls7k@5kg)v1aWoZ1a>jHC3O`Yhm-OU{8^L6`hMsbJ#o!%TNOzqm#(0$KXS=7LI|t{;`JEX13*Sar zOB2R8rLb){o`&Fh+uC7i_mv{D2xDz)FUiRf(lS5eq%9n+2*C{(8k+Fk5{e)pib6AS zt58*~k{jppj51d4m1{K9AOu-u$Cp$G~{Cd6oJKg`cZA=_qqW2zwGs?w0(V9ws<4OZ3-6o<{I2vV#0`{8CjzXv3 zo1Q$#3EWO^I`>OHogg>PfiF8ObC6sdy?)Hi;q-0^c|d}CjKE-=pU?f7_@~%o zA!ab1qe*=3(Vr6b#n-!%>=Vz6HjAR$n7sTen~$3B=xAu=fmm=>lG zNWEEeecc4Y+L^mctHN)UHV0~~P4bDn%0`@SUFpV7HZVloDapK!oTaR6exC(5-AkZG zv1bp~?H)6H>7caUYw|qGXT~gh9tENl8tWPZsb*A&VZdW#i)F0-jW`XW;mwUJ2U| z*y&=k-FLs-6I)SjFS%0ymnIxB`MfPVKNtpVlT0bP=t$MQTLb7t!7XjX4Dqq|Qup8~ z9*dgV4>kpNQZ5?wu3F%2XJ)0D4qX#Fp4Ye33K@nlnQ`IiFTf~+$=cyMWj4N_hIw*- zb4M}U2%xst^5whea>2CMyGOgniF7=7!o{0LNv+E8tG6}Gn;J8SIkoS?X4YH}$|BPW zzV*hu5UK9%Osr0_+h6pkGudy@q7OLza2`)zcfEzR}kJ1v=YzlKIbhq46Kk z#Z}K4eOrJm^H-LQ>^g5quQ!vx;kA(_0a>T+b(k+1j0_W>1_I~9n2pG9dn|dM;E+ZE zZ>GrxAUQ?F0l8+F`*Xf`;b^2B?N$AufT|YO(7Zfy(U(1H99-Nn0m!>@KU-rMU=6FsvkGMUrFks=~6{o>&#VX;AvNEwGp=)^T zeKW@Lqf=ukQ_ryMQ7W5X`LLOh^Y)L;{AAW?*7h>ynz$McfDu%xp zy4I~8y7d=VEkkxX8c)0WEk4=c>&<~Vu$K)U{wu

    3%Z@!7iuRA4{2tk)Jga3U$AOmEp|07PbxONo()m0^{Fw+*3^Ei*hKy0R@7L0Hx}U#N3`_w|V`E|l z8>YLzw`_XDtTo%Esz){>^ehND56W5juie{CzIx?0!^VOIQU*Y_zpGm9fOd1L*Bj^} zfoTAJI~p)cawLhom=`5QueQQ0H9tZoRFAEhwy^Rysad>qscF5FiQ@c6R+&v32h7#g7^NCmVEBP9hUtcw{`5!L7bv$ao!6 z6Lxmy)49~2>`>Y6n{79!KIK4~aXE04{O3e(aa3{D{OPOND-O>xYLi>l!K;k^583Rg zNfW&$MK@Z?2zO4bmO`P5iG^u+Sds}J$;kO+w_}huuu^gO4qe-`;wWm)h+x!ej&T_>12FvoCeY@ za5KJx7&>-&*PEMWUZl}QfnHeO?O-74OUlVh-uBB~n`#AgqU-56XyD(dr1KqkDL0`GjlqJob{ z)I+Q5&BZ(~*!%1Kj5Papw8Pik8+Ogz$yD{(A^DHLryi~z+0OBIAEPOJJV?ZOuw%NZ z({|3MHFw{B#MPg0e>m7Gh!25u;H-U+ITao1sRr$}yJ zMB`pxu`YCgjBypLJu!XTb-dlJun#>gn2e!kAGgT98wGf9AVyC3iR~7BiQjoZv11Wu zFuxzKJ=v||*VKRuOeNjghpl5H4`1qx_%dB1+1(dmdN4h`{doC6-J(DZ($F`V@ilCt zf^1!FLMP|6Hr%uUDC(~wTVF7VecnsxV6tiAoiodI;f2yk~~pTuaPJp5OW zipX8aZQ6jt-SywdYLJHZ)7g3%xPo{x@Zu8etfLFk_uBuGE^uQ)y;sHSh z9Q*S>4hy2q6#%QdzQ7@C@auEUoUcXiMZ9o0sEng754m##u2M`Z8tc)bn?zb80g3OE zdw5p#cXE$;3fgfnu|U;z;-R?=hSdBI{DPmYNN#i?c}HjAM`YBFK-y%?OZuOVZ_^-u zkLK(O^d(cb)S*#!1_>`z8%1R3PwMWN*U@8Yg*RD43J4~oOw5zW3V$cpNC9fQSBV1z zoX)>)*IL1Rt^z0CJnzwnCgLKYr*h@R-=JX99ksrXvt@;spD=ZTc5e86K?!DSN%IQ} zoPBMQPpE+Pb-m8pIpiujFu$gO7b>I;V~J#>1v$L7w{_$@0A95K6VtMpg^i7{|JwxW zB2mmx1qx7kCH@mU@H#0iUKYV@z#uIj>gBY8Df`MoiPjEdD9Vf4efE=Pv1EJA=f~Ec zKL-Jbp%8IJb$Dn9PQ6%ZXfQGv*8$Po!h#!Euk1ZsLu-GB6;fEM3wHW%DP%@C9^*PM z&d1RW4lS>R#Zs^e^sK_g^e4`AH_c)9#!lOH93t-Yi%Ut#P<7jofWa?C`#S|x*#aJT z8SefVnG`z6;SoLW+ok#YrvKCx6t+qX9xI*7)(IB=D>DVv;)O@`G{1|4G(ms$nr{<; zlB$Y?|5eL@2tn0j$%m`x|3lvi^#W>oCcHSjp075CGW@q@6sirR|9U8{@2X{B{e0Da z{U3=4qqq)a_ajrCeALA*?_NXmpZ|(j>@5K8_WV#wdlK_1JMTZWyhs!IS2IFj9waY0 z0A-a<>#?&piFj^!l0xRnf3MwW(Y{hF7Cvp6LNsJN)uk~1=eUK?rO5wT{aT3^&XV}Q z)#R>~{-ep61D7`cm52T+bnR>1kPiv+lM4U-cOLThh(755#S#4A%J1KMQakbgl&1h& zTrw4vM$grioL9A7LTW1Iv^KoR z%|EwGS$sUs5cA#+{x@kD33lIqQW3}aZ#5J9zmNW}70%n79<<)0JreOg`b|u*zx{No^}a>jmdxLcI=@;e={8xfTC+0`L8Tsms^5PmiOXGO;w~MkYqHNNZKy zY>QMdhANtCUs}T?{w*il63))6gE3O9WTy5?cJEPH{F58c`uh4_(LIFT4Ngo?j{x{T ze^H(-DK35wk52Y+I#-0#?c~Emj!(w#<0QocqpK}SxgJNTN4UrO7U=&dTE;8*uM$4oa=)28-#fi42^=WALNK z;NY;ydMn~`yBjwXGxIkGY^ndB;C3kxlLCn~Sn7v~Nz|)sX3EiIh|60gQqCYDh*G?2 z`bDLb5}}Dd;Fe~rf~)Rv+@Y4XMhDF-=7^JIoZR3$ zSuUzwdL(J_V4fa4{pMm|ekq{o{WH>@FpOT9etd`daNnm@wp9KmW$IVkGW@>(O~T76 zmXbQexFtypvF{@*WmS^YS@rsrt0HUQM0m0RgMmjD>IksjGs7)ZmVa0OX&;+7w6`7l z*Fn~@M^`^4{zY&mxWRldkFS3xW4Ur_sO@h&+v4qJhjXP z&{8sNQ2jeN^RD*cYj%%)@J)wo-lz(dLv$}I9LLQT3vpH3 z;3>NUxQ647;zKad`GJadFv9)bKLg&Nj_`L!lw~#}j`^^5M`%qy#;|MDca5UWVRnU? zvZ!3*L8D_kxz45tA(cWb0 zXbUtlarY|qU2g)aD0>3$T{{Be(KuFmWr~GH_N;?#&5Ck{6VJ11#i~%0`}}73rWEhF z0@LHcVDDBq_<`}T>orgGB~%H(VDevn0gtu~WVXzbYfDX zHWd{qA3ro`g>PzN2vyQTDiPQBWr+6f)?~_ariL{SB&koJ(X3($&)(6NEU>sR@BqJ!g`bHql{snFJZJ2Z(kpuhn0@fKmLAJ7pNc_MBI z1NMBBd_=D+re%#rDNBUdbSEdl{RpGJqOm!4jdg-}qoy0XWr8SrTb>#tsr&t@vb7A3 z-3D1KXD}@6q;?>#rpi$I-fVhr^J68azM7LSpEBN&Sn2M{3s$A?H6}}&3DGbuz3F^< zWaU%?2U91;vwOC9#*|#a+TgZj&r>ZP5qTy4#hWP#HBYGCbWa6m9g}1Y)v3-YA}UU*HV;3f{IiBe1ONLw zw`&whS6fXf&b85mcb**!g`K}7F5BoHY7LGsFT>kAxmslg3vKi~2E!2;M%jL>u7CFW zvACe;dw8|U!j52~M#kg{ZtX=^JPWVx`^ahI089JR<3S6yzFt2^fBOPEVvEBt0&XJy zoNslu{KGtGq)@lTKEm7$_4+PERW0UP=NwV*_AJOi1RJB2Nyb0J|7~xLv-b2O&7fzY zs2KSd+qSYbwXJEw!^59!6nL2VuNW?Ksv67|WBguW)R_S9GotVaBQei9b>lBqZJQDG zM}$Ks#OPvm??Q1`xujqzsvT5Z5nUy;?d5l0DeF_OVhO)r)QQdsYSi!MxfA1vBg7c{ zQIXZv>1#c=7Is%6qzZoFuh94!9#=bmR$#<|2QA@8s; zLX=~HvT(y8Km3Of^zy_sZxUG*i-O8c)LB#foy2f9*_2n)I;`#ib7KX3o_dv>!BDK` z(}o;Q<4qXPbKp0E={Xl=a#;m?+#3zb(l?&gn!@PAuRTdI>ioG$ z!3s^>65$5X^oIIz`4_|cf9)o%l%C6E*M5jXZb84UI`$d=tTPpRw=L))E z6tItAs{ms5Ea{TwD{FE@LxM-RRr{orm*mHRM+N?LvaD74-B-eKq#~i&3b6swi;T^_ zC?o38%aOz0!V&}9L$IFSV{lz-QSAr}gBc=1b(eB@)_c^=Hfi~D(lbYtb&iQk`E-1F zk=o?2utN49bT!}#Mn;_o(wA}jx~Ei^g!+Vpq5Q(>3pLa4sWLVDxP9Lx$)L!zq;r5; z%ePMO!_sr*33$r+pmQ3}&(5%;uC6db2GNJMHh~CtZh;E^3>&N06IB&$AXF~{84J;` z%5t#SD543&pgioY%Bv%F37{*pE0nPNi#W#s zzUH22M-#V*Q*IJ@KdPm8g%dXWfoLUI?cpD;sJd@LKUuV${=o%eLYCpV-vCwP0gSPASd~3 zAW5bm>qAMO#YAkYdjj9!Dzet|1eKo4jdP`zKTNg$J)Zj^_iq9&!szOgSu@U`u=oOn z;lqkIclcA=ogXa7UKj29Q$38_KdgzkybbDB#OF^fNV|Nl4`Ct=s1l)#-11jvmuS2Y zS2>E!NH)<16P>-C8sZR=AL0NNezfTN3EK1wwO%X=)j1EbwjKxa$kkZvRE*%J^UZx} zUZjeGTYf$G%+h*c&eH7#MfUjR2CrUZO%exUQfgY$2DHIHYz{QPl;=4GE{I2D2OUci z*=En!tXoRe?$)OFAhK@=lOtbtlB2J?a9=!M2n#I>QaWF2pe&}ZDgD;;>L*9durd@{JLD#C>O0>6*La=YZX3z zG^+j7k~_J*(8O2JwH$fe>utN*hzoyz-rF48kzlYJR|{gON(UZAZTeAde|E<5;eCxg z7iu;=q`QCkNL21+5RcJi$A}OZfmG95R~2CT=U{T#X-l|Vt3z8qH`MJ*lmqLX*GQes zq3Exh5q=vkC)dNTXPa)Y0zB=Uz8Iv1{bhEib#^1XXRGZ{x(`K#Njbe8bTT&Vq6?3s z6K2pe(TMctRv-HXK0x=K!5SnaR^z_8+snGiBPwKMh10L~5P?N@XG=6;*O{h_0b(|F zZqK}D%dKd-58Qp*n{Zt|BbIPUg799_)(B8aaz~ZbDvk(x^LJ-E!)b^lIer_=IN}#) z3AtIp&Rx7{A8l<(m2I`BpI~hAScz+Qwb-n4f@WAL2f^(tpAEw-T+v;>^;g}lquIWC zaNpNP7j0y{^}RMKw94L!`zACSFy(pPUf{vz@8P(=G$@y^#RV)Gj{uRR=xRk-)_Ar` zMXeB%*CvNwqFTI^%mm_WU(@aYc9pqn3129CxeMsq;Zk%t6 zjx2Uh?YEpVSvX@uO+V>$X9V$6yM%_t?ld`{E-i|NnoHeYJuH7d!W$S6&aXA;t5=B= zz~X;T9jc*#dcD)F|;8w(YtKKtKLl-09JpWx?e6Qch2Wm*|-t)`iSA+@Y`B1 zK8iYTC-z}!Ysv6c;zw^Val#Y6=!^c_pv}Yms7`#%>zHk&mSK_VbP&qybp7j|mU`~{o6~X}KwW8~ z&xzyi5qph}+Xbhd(GnjMx#0)le8$?Cf?Fkxer#jR)$og=Ly>`??O#)pUyBda5K#ZV z@d8ZR{PYg&S5RD&_mLK#n@|qX$fN_O?#m_wVyMgZ9g)uBT0b&o6fIG+hm)#j$RVdJ zXHdcl15U!q3vFt7lrh|MP1BA!UJ*XP;> zE%nIoiAkE%2Rv4&{N*Y-gM01`c0DF(tfQiSC~()*+(GTIUXS~8f~g0^g^k93E0{k9 z4Y?r^UUYRqxHxyn9g4@K#GDF5xgB53dD1=Qw;0)ns= z#TprOzUBt|H;hXM<|VV%`n%bQjFFW{ecI}gytPL(@+cs8m?AYs!BH&YADO^&jluNcAU43q9cPL3^`E>_@-K1rL+A)(9eXqBSp$@e(8Cw6?0>W%Lt8HKUu z3T0sXGx6wo8Zgk%-1ttSCEDrF-1F5Dcg=PVde0zV{HNd^4LTe3-9E^gvIG9TtYiI? z)A#qFzRqr)H)7+Y(NPP0Ikr9o*Mw5mDR#4OAPV=bcY|SY{p#J&Y89uhxi)(MIiIP|%*T;^r6Lj}L#1?*k|8Gsm?0eK zWs6!?-hu5o$~~G@4^W6nct}rBm9ji&bcCXwUR5UO2-*)|R@JffFO)d^m@jqJNZZ<8Lp(SJ13KI2QCr{o zy-iaPJr;RBzp(r?BD2@vo0o`hEF2I*V@p(w>io@3X$a6mW&)3I zQFxe^g6Lq|lSGAmZo%ztkM7TrY(dPifHO7w2MBl&9dvnM87%rUVj>5Cl?r|8Z)zr5 zC??S%c+FOkCd5XsHn?is#_JR~xw%$l@UF+MzaO+j=gEL~;-JNM%S}8IHG-8_4>lI{9jXS8UkgmOFq!VDR9gq0@JoX+h&92GmS4B!0X6;Tsu z+Bd35&eShTT(zuwMShDYP1>XE-xg5O!su<}(zY-_QD+itHE6Vz_Dxf^fW6@Ka#h%8 zz{GoXOLE4@FN%*>rapd;$U;zcejJYTG%^a-!?d*$?Q#=tX-k0}C(C-J252@INO{tgm=KVnQC8*p}?-gtT0!PzaC4Z|nqmqzB1%NU1 zK%x1F%R@8(a;jw)pXRpe~Wmn5!mOD(bPbC9(02^gVs`H;?1s65p@IRqQYS@x< zC^?jgT3L4pSod&+E`$g4`?nt1ux^i(S@@*LCeZv&@Y%t45409O`K8c2146$d(PD z(U5$-fHSB@@(YXSeL^!DJjze-2NiRm9IXT+nSRh5TW=~uA9 zoZH(F^_w5gcnRS~rRGoCW?AyvvucyOivAyOx{-%sU~=9w!KjoNiTS~if@s?!MgKry zcTAG%Jo0sX5tbN)ib~BnZw+%Uan;MHhzsBxLbQB#KPI3CAB(z6)nS{T9pTI9bj|lI zeCQmD^}rpht8jMV7noa>uY&yW@3{z(Qqq19&P-`}+V$^m_N`R)G`Z)OZcKBzV?NZ55ra2~|7cmd+LV2h zs8L0IsFj0lm!kNf8d^T#ij$52NO9YZutj!1Cxc3R()(4!H=4^eS@kvV9VjDW|Lk&_ zjcNI7r6mR_(O5%+YTurmksM72nTw23#pBkrX(l*!xsm`R@Ed68ydU1#$jETq_gVO*v)`4T7iY0@DWIqO3a)fwc$xgj)-e49x+ebt8 zMal;Mp$e#Jd0ebfa=sV|)rI5_`IaZ&7U7nGPVD$LT04D3)`-E(evZfW^vj2?R$obmHpGrW+vyv`JEB4Xs#4>71+ zA^|+b8uAiCeIAN8TP6k19^||jUA#D{m>zNo>=9F7ux5Tsa+xjHUZ$ zr0Y8Kp4t2pVddOINjQka%BNthsV~(B&k5s0J<*2OR)$Yxn2ou@ILXX`ut^uj{%g%y z8S1*qE#rw~Z?EA+kOH%-peqLQ1Y5&?%Emj=p^PWwR0)(_qX&gQkOg8&cGRgS$91(M zecJ~|I!~T^bc?uf-KbrX#eyu+4@#Q$$&KRA#E>MPhU${5{4>I|baUD0mKIRH?BjmU zkpPuu>8ZSql-LCI1>a@-OXEFt2T8tNsXHSAc?Y z+Q2-UkV1WXr3~&NNlY_@ou$Xy=-;5g+oJ#ku1?=S)k8X)$fl;u!>(_?cIDGJJdYY{ z<~19le!54R)nypX$DR`fR?j|(P0V2VefH`QFz@*sG-xPPqSXGuNb~k9I5VOUGX$#j z_$3~=Ela-h(qb^Y`@lYeijOXppb*;$1K5d#2aIqA$75<Tl+`Ue(xQ~mA*!1K_8}#D?Du)jZtB13gO9~)vL|P%hz+p!U zI|GW<>$%hWw@M+}7ggW>eRjFKm#u-CtNpbH6K8zfc|rI&nfrkFH=v;@X6KB}X28|r zq2bm*+E)|v2cnd85Ds#{%D2ln>baZX|CtOsc1H(<&|08vX}I$UQ$3q5A0-~Gb-=fC zaVE`}a)iaJ$e1KBkNvsdmTSL1J*=LUFeiiMgFG11x*t2Y`A#X_>4ywg_iXU*6wI*qR|g z2UB7EapCutZO^aXf_B~$j~Z(%@9bjFx{UIpAXR+du5kt?JE&m_bqmTCgqsl~IuxpR z+0B0|p=_DL&EJN?7@JEpwl`awXm1O5mu#^Y`Bmm~*+-E60k1GQ2daX82@DdvV0)OP*?30p0Sge5 zdOT&7#E?mR|CT{!Hxb?j3{28fUq|P1?`ECf+~WB``peh{n%7kU`1?y~KR*%s*6sJl zO9B(0CL^^BgQIpxvV~eP#X9St6~Fq0kP3hqsr^7u-*%%F9p8M26Z>IN*I_WuE~k`d z7e?0~xD9mf82qOl&jLdR#y4)~NL$|uS@{h$P*Xd^g8cMX;Pn0n$~P|YMdNO`$YV2f zAFr7CeM{$7b42n%Gkdt9xWltsu=${>AKIzEP=SlkG$E5ZdKUu)!jNqT>p*#Y%Z?tV z&`kY3@|APYs4~)jsJ>(edfjl=wL-?L*~pZdyg?VhnfTY#(H(dSmU;N8B1X{ZfT5#8 z^B-vpuB)CBvH{HwE>%W=VHK-zWK&I73=h&YnfWW2B=^l<%=uA;n*#y`VlYo?$5Z^E zxa&1P6U~itPDSr;A1u_R!v4;g?^rW6uoA3Wd#aVYiTG7tEsUrs;-sGGSX)$NP#6a% z`U(XptYa!tsdTD0e{#){s|!cDJ2B#P6TZvmPD)P+VZFRQvEGCFzLq=I{a0?zSC#YL z?Hf1@=$)CaOAg4oCqks!X6cl0*oz=w3R^X-L8xVGG}O6OmZo63*O*|Y1ik_@S2I~0Z1oU#ncQmR+8IS3C856^d2m<+;iNJ}GL--kzLEsVF?UyE2VDske=0XBk@(~PUjU~2 zT%$vl_A1#uRqGQaRWUMnKD5P{+#)v~xSr5rXQ%LJt>6>E z$(zap3=Mln7q!Cn@^5i!s2{#SnDkKL7`z9OhJy*{TJ@Uk5O-B(s(|F(x!=MPv2So^QnkJ-#$-RRH3c2eqyJY*J zE{I>igvo7Bt(Sa8yy)w@)3;Y$18XnA4v@<|ip2Vmp?sbTqr!&y?M`@w2S3;} zSpl8mRCs?-NlyBD7?Ct515RjmvGY-)NU-@U!F zUB2RLwp*hsvCa_nd;cDtEJnRVd8clKEKyxIcZ%(m9}F`E7V^Ic6rn7=1t?e6OvoCK zIgAQjkzt3mUn>9OHJ;72bO%1HSQyF$k$M zOa6-jMofKA0u{FS{R=t@{vYu?hzb0MD8S@cNZ}vq4nyi@mjjrVmPh}R!}~&YypJ|u zwGIM)_BXJH1l0Zq0t~YBBDrtAjLG13T1Z_QRUGSlePUj2`?IGq*Mb1H11wVzg+dHx z5Icn_b-7+qPng5AU}#vV&|aZWiE@sFlM|+|udiB7wXC#s=w^!dt8n*|wOa*}m@#@6An;3j;_y?^LNNRj47$-B-K|HCpm9*qJZ%qxfa1V8BU z6rJ4}6is%z`0~wljgOHLF_~UP+EFedyP&AGlpu@uCHn4^^g*}xKPV)GZM52}`Cc5N=x=1;g1nz5A0M}}I#uV?x|LYNcY>0-8jQnva`zV(iJkamYR{tW1V#d%|*gkSS z&*K4aX${s3k`N0ipK`8nU;wWzWb;QtE?a^y6f%e#1cvTk+EU8m=StoqG8)p4S4hzJ z%jHI|!r9wPu{XKL_7)G~1Fu|0a5;#zdbx1iXwWqg7E@n}i>UxZcXz4uz0 zCDscy*y$}~)6@RIsL*O*(Eo^Ni&gg@1NZC?2->-%J;9TCa`tvHH1S+K88c!(-B@=uJP+A zOO=%Tm#VXkxML5YT(4{U!F|7Q))Jdvzm^{zwiAV9@^=7vj`cCQ`hR`tItd4_UM-I| zHG`Gf4G^n|=o1L0@=f<<_8>BuZaXZLPyXfrw4as-gm7HH74K(f#qQ>+mfq=kPhy$< zD%#45Hxy^Z?uav2@QC&F0WB3eM_H}wYY-4&zr&}y__X~CYlg2MpUfTtg->&)XtX#$ zF`#wgJBSHm9|E#MEdtn6=XUV?BW2AscRFbKj6Tu*gGU$aTi&a5`M$k)Xf+&IKpa@V z8K15k?tt+;4q811%7GuI|9Ivyda{rukI+@_-qyi@9xFUB33I+P<8311^YICk?3a~) zF?CVs{;fOUtK&fhpLd}U8s5O|9ZLAdgz^t$95<3LcDYD)#6s?MG3$X~Zs=vx5c5t4 z64jJ7e)24~iJrUeUZXhMgtUNx;wNAzox_A;rvOIP&=Ki5;0+q$y%@ZM;4<5Q>8(S^ z9#VFr%R)}lpAldEb^}V4x=~D%-cvQ3vl;|!)8imOOO;^UW_lvZpk4&3LOA_2i=Bxn zL*PT$3&ZEr2mIG>RB!$boOSu@;N<0pHEY}3Zd8XAj_X4r5vb%5RB=6D9ATyg$L%9Q zFmQwoXWnc1IDsOL;4AxZ5tz}uhh1#) zE*DsAEJ;VY9uy0tu|1sehyr}9L$P@H9}`30tHm*x|3BWoIx5a**)}-A-QC^Y9RdV* zmynR)?(Pl&LLj)iySuv+f;$8l+~IxX{O&#H+;`8jb>HQ$SUPc@Ik4l0Cc_gX283{eNW1K+Vh3xWk0%vQ1Nc$MS#>cRQ zO7ovAfgWnvfaIzi6@tZN(~?3m*K{BnLrrw%lf)Ey*o9V;oYQa=VYD4~l%J{w?dC&Y zj_WCQ)DAR4E5Vk>?8d&$&ri=1Q@E(;#N80czd|>{vTTb>{Z(BJ5%3&XsiNRS4)d)B z%Spjx0I#+f*3Is7S#JZg+q)rXwTo4mqfBWK^J5P=aAs)YY<3KL>)FGmCxF|~A7)KB zqU)l7T;vsRx|?CLVXezrL2T50$dT0qo>9<$<2 zX`uBZD3f&rXh&H?;Fq}U1!moBkCLiTHvg?d-<3>NLZ4GF{;nf?M(@{K!I)~6Sn{4kSk;w}LXBgZGr_#(t zetj#($nFTYo(gU<}hXtL@d;Gp?3LNowJsN32xz2QatAP$TAt>|TB3+JKF*pZfk*s>C4By?Du{TGfsJi3n6!_^HU%@t0VTf>-0 zVa>Pz%X-AxVk(8;C^H)?7!^ zS1|og3Uk)fMw3w}nQ6#jp%&Xe3xDx1Fg=lsOOYK3EoS=exc1-*TD6GV|0t0C?$yB2 zzU>zaT|5rwEI@kds%6K~NZ92?g7=!sLlgLH(J?wL5t9N=JW3?_QlAVX+f%MV=jh(q z?{lc{i!E?3<$|GfRD)lpqccfNIHaPQV9}{#q&vLHV?EEvMq7A@sOL|_jT+1&)|O|K zV0-lf4-=h_lo2T3T;Rl%D*No|Ra8h2l7r6TKW6$A(yyO{#HOROoE=g&elTbFHS^LP z^O7nRHJ6k0iUWAF`>NZG***D7M(6+#p#w<2}Ko0Rc^z~@ODLEHGL4zBY%cu#fRZO4dMF;85{*D zN^_`9_B(lIPuw6Xo|HmR(LHiT#hU!Je79b#rOFL`5b(K^-!2Z}2w9?_fz#WXtN<+^ z#@6DPee8o@AyrDG|7}i&3wesf3#`xRK5m$Z;z$M0_ngdZxDLXJ&Mx^2K{NBogr-bI?$7>7=Zspk*!gotc5T+`vijUXAJ{o?=4vx;O6c#x1;Ei@4?1 z=Qp7VU&V2sDA3|+#t>#`K@v8|w0aM$EJua?1}`(9GuuFC&V-Xztr6B&Y3i;uT-)n& zY4b;=$aZ_Ea+zp}o%EZtGiGX~cN1f;kU0&r`MAVS>X{Gvk*jRY_o&jSivU3Z)<1&b zy!TL^;OPP0^KL0drY!sTH9g7EV86ZsA*>@hhz8E~3Q^it>rLuNOjk2uYC@tVO4xEd&#zoB$dN3#F*E54oOcA@t6bF|kjj3P16 zyY%iNO&EZ&uQq|rM*r)g0=)VQZ~wo&B6g!n>0PwjVm&=~1Kl9Us@5ia`?mRXv(~rT z=COnE`g2Hh@bY2=;(;YiMaKuND0D_Kp3Wb_PD^WF{EbM^os5kQt)lgu42gh;1h~@y z!=3s{^FQaqP-fFc;w46cK|pUNCK+}E#eQPDAu~@LLF=MGK^2I2>i7Lcss*t>e$adH zA$6<*O=L??3I)8t-8lVIizD}m{H^s{I!o$NC^_xPUZ=#-NR4i6#>?B=dwLBTs1z5# z`tY?077?+pAj6yD?aHpv$*&RHgS;f;oncJ-aMtwnbS=+ilR#;SLE3&G<#6M76Z`FB zjiTM|C@$|DTlRj0T*e(Z_Z4Q<>DZm?Z44Z*G_Ktw;q7_VXP$@gL|4!P8}FaOO?*ro z=hQP(($A@>YB<7nY-ng`wxD&eSpa_XM(1c&tWMWD9~%NstgEXleH1S&EbVM^_>|lz z$C{#|s)~w@9b>meWpc3_Rajj7wQYTiZfBKGzr$V|@77$BD=z~R#b-U^oWcZCe0sI7r$ z)9&84gTtc<64`aL+iCrN0krdPg^~V-nd3z_74z8zE|TKoS4zPrbfRwhgTMiLeFkee{ckPpUTZ@hCKOn)Oi!@s5+!YUpQQcv5xuw9vG09^wVwqHdaIC~c$|PcO7_YQWH60;=EP$G z=rCT+u5Y#r_QqCP>m{OcJGr1Tv!%o`PZA>yh5a*>f!l$%p3fPq-qcNXK9 zC;m=iZpM;JH;l<si4~t}Cx9Ow|v*x*(@v+@PbXjkIDeVr|weB?qI%0hI zZKB7%s9pV9Tr9L6Fiy5ONjMXZM_=E*zv}IEkfL3qyaT=l$`{++2F*%$8_pjKZGyi8 zl@~_EZ<+;fZfw+RVDS$;LpeqObH= zQP^hH#$8~Pko~u3bs))ict6=))h&>7UJ<;?T~m%{n5_b6di&V&zEvaQ*8m-*L}_|< zkEOTspqn#2{JCSDv6B7X%7n()q&8DZv6B-X(6WbAmjx_&`;rBAY>0BLQ&bWoqaeHrW+JZyv@d!P^k|* z=uTl5pizs8E%ktdYLL}Xq`Y(Q)laLJaS$)fDC>Errgj;@rARq%FQT&u0Y zpjlD?2#tUSui_{3Hs5$ZT$%|q+v8fd-`ne5fQSd<$X^|pga@FafXQ(=6-raOwNr^3 zvbpJZl(rdz8M~4RJ%yuA`}FL4F}QvWHcrD|X?RZ%U36fH+Hf4in$wfTcY&!<<_dl4 z^TO>+C?~4%8F5xf2((G{$1f@Xg$}y*=i6XZ6fzE#x)m{6QMo_Rpn1v{@&Pm6yURGB zyvL1q!4wr7Kh9{-%khSo=k3!nc!I*JGd!6qbpt3=N^xlq5i#V58Q zPDrGE>8E>PF}9Rvn9atUL&9LyLvh-U5y;@NL-4pcvHq6fWI@8kh4l1rljQw1>P4tR z(ABlkv^x;UF!8WU3DZ!8obbl5Sz{-jx!2e@6^_aF4=c+Qtzj+GBt$B|LzLd;_K;IF z@I7s$#SwHDfQD=mvAq!g?MtiG_?yphNDj>3|5E5&&-oA`HTZo`0<9_wPr_RPZX1b9 zyZ~Hy>)yv)9M{~6fuy5}Y&c1!KKcGdR0vj*X?*MQ6WCDvz@mlKup{WkS0JY@?K8j( z1DDtMXOgj$?gwio3)V!;5I|wK_ zZHIS&3F+y1=Ud1meJFgoku1Cgx@E74dwxA+G>;`i_VEH}xtV+X--f~3FGMngtMl@- zKC`zzovg`}E%aioco?0mxNIJxPJxuF8chUcRiFDkO5knpdM-9DSJ-}C58)1dd)*yB z!N(O+E_CE09}nPgf!=`&1|AS#V1DOlpe~rxjSL^IK{>qcp6;_pc;+EFJdN^3eC?(C zwOt%xZ*c48gO6@+X&4wftIgzgC?819_Hg>6@nhVQCIUKqd{d`6!o%Utj$PJFwmM#b z>UVaVId$slg$?IeCBuR!Ra1V2rL;DVRk_-a*ns@&AUuBucp?@#8m`U+WaNRwyVCc1U`-t6f++ww?@!0^I>HM~A z75cU{3$$fxNEFaxdcOE-a{yO8@mOxh^cdd4BEU*~(V?6DQkVJ#!Dk~NJ~@&0i4)34 zhLwsB8Y&2ihL$!?^*BW8Z>1&o5jY;K)~><-O1S5P81w!MVELOr{52T=eTo0|E63pm zFVld1OGx7cdNP8uamwGap{Pr;qLmIf#x{7|WrP3Ep{y_San5p?4S;`5qD=6E3TXS|W z{k`~QxX8kH^Tzp|?Ckz3ASAjVpvPB3T|7=8nMJTnNkdc>_pFqJk*!m!m%fkX_q}`y zR5&8tFl&C&OTq|%72aCz zMw~5@%uQ0;EFk~;_Va9{ zNtF*>w-Q-E*6^>-CMw-(Z{$_Pv#1wj^yuQI9nL_(sLn z(xNTf!glSIypX3}s@(+$^0v8YFr6`kB*Exnk9lM7)S&m~$Gh4;_XVKD3t=Er)msn< z^ff7A1E~K(S@?%b6yi!XF`4MCJ&`~XT1kXM{`Bb*Zie`)HSMtCW8i6rRzS@T2i~7c z1QLKYP?(y|HS|1|pFrmtSjvBLvg*bB9%EDM$bHILG)1SD(VJ1x76PH}ha>n2=@G&Dg%3{Iu?y7X zfafwtOiJ8UxQE3)EX_J^qQfdWp|vqFM?D^#DPd@ z&_hD!d z?K*q{+opb+bDin8ay-0+bUuh45BO-@b%?!=UVZY1OaW~UCUDE*f1EC?ZsG+ex4vf|Z-&iZ7=DX#RdKNx4 z-l~AwpRM6#Q?Th@()vqbaCz8zCl-QyKEQ_5F(CiR|mVCJWu@ulEz@W9wHWZh~SB-*Fvze~+GRWGVd$oelMO2B6olBMhT!)fKT3dE93h_5KJD5vvfA@CY=3%lr_xw%nNe`rEf)6kH%t%L0XuJXVY$JsEdul?u@6G>VO-MF|U;NUr( zWoAKr^&ManZJg)AaccwK5UVvG1ZwPw7mhc(+t?enGGx~)vE2qxJ?R#9xAz}-5S$#> zO%0phrUK?w1*HlXV~5#IO``-M=|6PN^}uT~r;8~YXPtjpan<=z49(j)r|#@c>YuVi z#>NSsHP^@^F+mCYN@`ixM1iQDL@gkakPb$ma8N|VFn=< z=BDAmr+wBOBjqA&*r>BhLdH=&KSD*89U@P;_sIIF-1fQfjaJ5nB2`GoWN##0PX^6l zXVroVg8>I-T5DQnd^~NQfXyv5l30d_^eCm(f6p@ z1cH6udeMUPE|5cH@7WgVpdVYA9gINLE`&TR$S+EP4^0(nvEeW%Q&i9xzlr$e*HH12 z<9YKTpIOXdllSI~g9VX@`{)ANOh zBiKUn49@8HCHQa39VSnuq*}M#45i=M(IQrb{VgA!UBBok?uRBC(whkzQ9*NXcBUP} zv%C})Xje*m_2 zB56Zv9Wgr*kxoP9RvIGDk6a`XeDR?<$pHZYmoI7(K@=it&DuecTen}lSw1o@2Ab!U^34n#ty=$v zbj3*Ryg3pYxN@BPQ0x>V*a-atIj@t>7UwZR-eBc*&T;}aVh$5EN3LOs_#u>C#6Vj~ z_;}m%%!m_EL_|~~i(mw8`mYy~ueK+9h_~0vf}s^;IB&&B*~m{x^x?ey{Wu9yZnK>l zNMVU)QSG-{vivxFBnR){2mN56TPq<0Aox4G)K=)UVw0mE(MAea9hpE03xZ^jXBq~! zpMU*c>zd19t=`PZvuR^b)tgn-bXfv?^ZvTmbKxq78mMI4>-mexPUi0Ig*(S{D=AbK zT&M}Mz{M8*zUwZcyqoD>2ct=1(Y}yRwo!maPeyMhk^bcD5P|zo`w~4cwk_36D~qUY z!+g^z?uEITa1C=_Z`6Dwpm};0R&TamZg5)HL62^w(=sasHr+*OzoW~-iebgM6ILHt zs&@hRDzB2#@#`e@gmi$i)}e?Ib4Ya`PhOyi=goNwiShPQd&)bQR%)P1e?t-5FIZeq z3-`ds)CF7rW+nJ}2T||+!s&f?FZk#<`X&wLUhHVt`8RJyA&{B&f&6(hWAW;NNe=;0 zTF-<@KIJw?eD8VxFxi(Jrh-&jC*;d}82q{BmXH_UI(*@QuBR5;#$T2ApDLuu7z^(I zY)Ta7+sxqU-hwgm$vNF=#@=2TWTsVfovyY_r}tJy#%4NwP{d{H3v;MC4eedUk|Sp; z75sM3hn&3yd!ihi0aa}3+G5rm)PAnQ`JMwIKGdMb$fgcWGqBbcR6 zwjDO#<$4mp==y1hMvK;L=d-wUZ2p+6^v5_A3RFqc+JhNH4N9G9i7M1)!3QFZwtEbL zTDicXZdZxkK}`z`v36Yrr-Jx}r^T$A!J2~@REXSd4f~ZkysU+Y4CA5hF!Ow74UcqS zrI;HxFwbf4Uqv)J?rOEI%r-GlJCM6BrEF+veLcK!JL*=_#0N{~YQ*>v4x;m3<9?WD zggt)9vM}gvDn+F@R2Ivb4z|SgC zuC%wV2N1bBQ$c^n-VX@fwhW|FBU&u(>FLKA{}!y}1A^ORvrm`~54(?=^6EEM#Olr3e1o{ULM5cl-$Y zhxSg*j2FLs|CEV%;K*c3)CYBeq>+RE5i&S`t+odZ%+aLAFgZ-?VoF$%Yc)0YP*CHs zR=pc!zPKmn>pFB>6$lgXuwAF+fW3a3P7Qh%xcg8ywHCg8v1|2VWE@Ri4}zc3$O>D zKik$|C9t|{)jHR9ir7$V;o{Oz_Ni1~RNaj-0-ACfN?_0wUk-|h^!4@CV_aAtrywTA zd*57ud!fXoMok9F=hbS_Q?q}^-8Y&ULJ6c`eS?OIIz$KW^Uo+7!3R0MKB{!x^iwo4 za?qxfCv^AMYFR{V)9H0nn{cL+`cRo62@{R<^YLKPL;mi$6{ujSut7B}vqN^c9vC-r z>Pxn-7bg?X>QiizrqYcq%_0>fMA|o>1wXv>?NO6ud!W>+Bk%6+77w(%;u?2kqLAp7 z`}O-Bb{aYcHQA$>q%vHAviE0ub3A#uwU1(`N!c?~v-6NEg2z(@$)-W#O6V}I%eo|d zg7}|#?}l3}vgRyX@9sT06mD^S)HA?m-d2;LTH-(pA-YBjob4e5#G zV;DpPdYon?GSxhRmwK2X5s*D24|E?kD0fs}l^(qg54syv&=1mlsjaP>DtZuUba&l2 z>{GoWdb6`mjr?HUOHaA8gN?Oe;z(D00gsxV5LMY*YA^mlmP>CGapUx3)C}so!NgTn zdL(_;Mi2Jf^wm;0AOF~h?}Z;Q@(H>OeGEioz2Dz3OJ5qczpe3?NL{o;`#cBhlgKpF z1QYCR71@YxIOlO&Vkvm^d>0m4D5{3`>{`b>w=_n-S9$ypv$4GyHWi-{P!0qtho2JT z4Fh{f!-`|IrYiSz2-<~kk;DlJZx@rE$!67e>&h0Z-T1A|Ry)=&3>j+Jkf)nbP?hHv z&!w-(SebP2vL~}FGTd#zN)<*7orV|#M8_;qlT(5wJ@g33!hI!6j1Ulr0{p~7x+>~m zF3~H<^(r8s6V319m!O40XmfsMgQnj}>|vc6W~ZZjhRAnKu21dHRB(HG{mP2R2oKG* zY#Ksvx1u(k?)JFS@ML35Q5%ALG z-MJ5~=OYYL=Pu2K*#6WCUF)O)>qk3a^b%VdAMkq77$XwP8_Xd(Xqio1`SpJZ5c+33 zs}@(K@9dG!I2?yPcg18)Oisc6olCSyog=Ue1G1p~ z8i~k4<=G+G^|q%%PMU*F1&$*76;@uqu)LfZn;%(6`g;PEEAc~cON9F`%j*xr5JrtZ zo4pmk`$2=#H9D-pX`T52`^xia()*H*A(a#FSbsG0lM(FQk=_*B>9jpT*j)v4U+1+o z%Y03c<_#;(%XEROn-2H);UW#?JAufJ>3Wz)PeEgv7!3=-5l?Srn5g^GPK%NxQ%74A z0Y(I)lR0$p{MO(^i=@o>ocow*{X@6f0L2PSt@Fn%kc|n1DZPy&0Sh5KSE;z-!{$}F z#tIs$auBcy4Fu`Hlu8aL6(5LKns3N6xY^Tuvkn(+sA|hKceIHP_>`06 zKo?z(AGB2S(df8j!eoj)!j5GM$(tOyM;Xr84Vd7P2+eho+RNbWwp+(DhSuxpA3Wc5 ze%VvPj-k%-Vi^i?BRG5%_M@zL@xAq^wX7pz1?#T=#Og9k(OSL#R)F6Py8Ve7CJIJ4 zhLvz+jsDD_xF+4~?f4eUQxVB`>F4me85rX(|76#@BGK<1yDk(jTW(B*NU9Zac=CNZi~IB$q7FLyUlARE$p{wJ|eNopJjS zYP%Bx!a&Qv%a3r~s5pm?c~D;3JF5E~0$I-&XNwfj%tM@#Gwx@f&DlOO*pqZy<#4=c zc!6J0ew9zR{Cc!1gC&^NHp1D)NH_V>vIqK8jp!+P0v+@OXXpCfrB+5|Ooao@lw{Ka z2tH~yL{aP14t`~fBvk#Rz@?a$n-w*A&YV~7!Ge?P*^xjy+KbhFby@3aN5N9B0Xjb9 zp+}{KiqS^0@H4-@y;$UV>30$g5>{R)7W=@qWR*puUq+vp=dx;v-pRhBt*R<+u5+>1 zjCr9azB`oaKnqvOZJrm8eO4{$00!WGX|{)zfcLt31^BuYzlD#=(|*DEk(phyRT~*a z&%pe8qc~^@`Yvonpi!2n1|Cbp6;KdDgn}JLv%@5yt!n$( zdvopoYXcwONlsr$ZmwJxU~DKbcGP)T9+lIYJh-G?_YJ=jP147X<3 zg)!T~&3UKrn)ohzb}s3OVGmE_zoX`*YQj!8^Oh7zD&<@pi8$clH9Fo5d@mWKnJLyV zz%ZF9-Iz6DNH<`^4seIgRv+-j0nNG#EUkbqB{^?>D0P?RwKQnKLd3c0%mtXo?L|Lx zy@HE*I8<+4XP$*h?-2;ZBrM$!-9wq`p(TZ-5(ZDRHNz0Qwmkc-#)L7I7H zF?ho0itRwx?%y~8Bg6MA>N8jJKc9%|Lqg5DHuM?1KGL~EJ4zS$sj_ZGA;Mk{_RJ9r zb+Ycr9;Os|zxq|T#~@_)^&J_}v9&R1YYnMNmRU(ti!B{wzxS3#Uory-HObM@t}Afa^V*(wBdN zEl!{61!^8!O(T>&dURLFF*_o{O2{FL_Yyp#5qG=@o@`^DhJ+ei7IPqWBqW;0tpS7nRnUbQ2rRKs8QaNJiFORg(0>1 zGf{rgqd}DY^c(2QD#5qU4^^M9K4vc4y24{ux$M#A(i>M%9nprqYjg*(d@c3bSSZ7O zgmBLiZ<)765wCp73A){%SkCjd$~~VbhL6b%GdJ~y2=RHqpWghU)*vCFmI8oV8~qd< zBECQ9cGqvic;@F6I7C~Tk(pYW93x#)LSle$xzvVdt^HQh7Ze1`$-yOPH@mD*xv@mJ zFZD05_ZpRU_JPT<;f;ebxqBMViRh7*#%A9m5(3pQ=52W~r`YTy$YIz&NUi{ob*C)N zUOYd#i4f>^Oi}R8@0w_&{J=f@XMd%$U6ArmD+#KP-{8EQl;Z*SLdN-Tyr{!}AtCzT zaRpGr{XZg4vy07_m-tJS(k%j8f9YxAus#aP|KzInk4fVd62J(@Kf{HU8>Zvbi+mRl z(?;9exJ*Vyi5{lyHq4J7TzCqr>4J@eML||$jGdQlaSX;y4UdsWNv^rwE+--3)bkDS zkgEX$T|dXcIy@i1&hu>b*X}u-Br-lmYt?U6tEi+`r6UpDI0WUm-C1w6z=calSP*JCr|A^fT`Qpf7BbbQycJ+? zWorI!$k{;E9NQC zHdk~XTL8@~Buex~;dtGeoQ&#{t6Emx=AWrp>se3mbXOCKpM1HS!#m~}uzeMn6D}Oh z4|m;jY%r)Z;blhT2xgFZid3wlR=nG&zkNwU}OM|cq`DTvK0@>EAMfNzU z+)Fp}6K1S0aFuIt?j)=V9m1$0KF0qyODc~ms`hK3BZk5GL8YzP`78q_8@{o;HbtSk zw#q8YYfHB@MF=tiYrOX>b%@D9K8_>)GJOBAqs#vuWYTg|uI_L^vwytyH=C`{61ITF zYG;9`-;M0ezKJ1OZWm5ZnMVg|zB7wf9DHcKou=TSw(R2{ncq^;3CrB&!DIh;o<6NsG5J(u;B z%?)n`5wn6vH-;addPZ6t9I{Zrx;0*Os4v=6NxK^m#BR^mUz_%4RoTMxuWHA@(;nK3 zqQtpgGI}=Cqq#Fukv2x%3mzT}^oYx)dqa#<74^I#FYg$RC!p3mj{^R;;^}F}AM(BM zBL$tDpZU4kTamC6o#KZsthk-Q1>h9cADl9_n(axe1=bb=EGqAm;7Y-Pd!Ymob{_-5 z%e@mp)S!lJXz0H307&|3xWvo@GA7Nhke~GSYy=U}{wOJU@8966B)ue@sLVhZI(9-; zi{AQ%HA3L=z}kjvoY;6M>BBWS-mb09VPS&ojK_DG8RE{VWmlMQ;ejP4^SWyyy<^;NB0I4lQSFT(R{`E05)U zCRktBJLlq-ENpa01{f@L03tIJrL9xTNq)@7$c}ukG{u-x7a28@P(aEqm$KT4g1IU< zxhTWw^--tTo#0^bYXLV`P?n0l4YA;WE6X{|z7kM9JGJ?91ey%G|p!4)r+0F$> z3aaM^a5)`m0ylFfBb$~0p7ZIw=T8B#E=8>1MxKMNKK%Divy_xg?ye#&YDvEtC8XaW zTML1TjoiI#mdBr4YyU{_ z+Pfba3EXsHwbp#VC{1AFL_KG`ha|<;>@WyFW&YS>*U2_|c#zv#o_<;-{weO$3^6&h z%ns#V$sBB(!6SkkmVyNP(^tPZz~qRh7t&5x?oVV)X}lUX+)hj*L%(1R>Ob;eeapS~ zT5V>Tos;q{KxFF6CuSkX!1e0L#>I;Uf@^^ryihWj>%o@~VSdBWjK6X45<^ z&d;dA$!X>YXyRxqW!XWy_Gv@<@zU()3AD3~@8}6%w|soO#ITHEN)L(N<6!VOwrk8k z?hnQ`=+WLeG*qr&ZGP{Cn&aWxrDCY7|Lq@H;Nm?1O2lvhV20-38BcY`w^CP>W;^RK zCCWU+`cLRTO3hj9cM zboh0QG8@oKBM}n5n$RxYEqd-^b$?|~Km&r{#Rxsbf}r2>2rSH#FsMUIu#69 z1RGHbPUTs@AYD~0QZUqptyt#SmmA4T{ZQm2#O`B77}G0-U?;NdhcIkUrL>?Rz2K4% zWGO{&q~`m3*@LIVWKG}q13i@wUl^|SV=8QU&{AMk^$F!~ZUU3r%g+_)CWr)gy#p~L zq`E|DNy)OMVE{M(4~*$u26SiYBN+kGyWVzumBkXHMF&PC!wiIwtY{?9-(!g`uR;hc zD}Ij<%wdP9*rXru@Z`=9^9{X?=AT2wLdw0?4>y8JuobfkDNY-G72|Ec(bPQW z{b$Y;oIw}LR0M>BK){FKZ6#nF>j}|tDH5K zL{B7DDNgC@g9sGQket(XI~;*rVI58|9L&@noddCvc+YXMr1e1q&w=Jd2^T7bEy&n@4^$UG3g1kj{*1;p{CXz-e}t zxDjnLP5}bvi!i|p9WUICgL^}~*LvZ75e3~H$%M5v4w=W3XjTxxnVQ&gfy8{_ivm~P zpNKiI(cN`Pc=On)#t$Jpj>TZ}i9ny%Fjw3gM1QXF+tI5ET8-^l1n3>7YUdgGt?y1Q8LKhyF~I#>oM2nKBI;e>4sh{r;J{fuhKX{f*-WhgVI z*e0je1Zvt4b-xHj!qPs@een9j^1gGrl@H@{ypX;D1DlL~7a~oM4BY#&U)}%71&!CB|5JLV+m*p6q#NCJiB4qzO5|XSBwsr&&dr49LJ9QP6 z&QlT7mmQ{Sr^1_Bwd6l2tsszSI*wye#^w z;;!!hULzWdve}H;Y5=-}hQwb5?$cT)_d5|C(&HKEG3tV+i_|q?>)q-gbvn~cVDzPh! zj)E0!8TAQ0ffPj47u}$Y=b_+l1fv-C7FsP;=i6_L?N{u7lz3ZN257*fx+ zqvnuv^Va0q+{%Tqz}G72w_snxkqF+QpNRNZ;)L@&=3wY)`;#InK=kq#JNvGW@-0Bl z$~ehLNW35d%prG-6eyn4KMLSX2gvjM=Zji%B@)`@GVy;O=PAuN3VdsQ!Zl!KXCR!@ zOX&wg8mF{jj*oeqUI>@@8~+JsUVQd*v;h`#rBM~ba?-w+thLb&U+8HUyVT8s9BVWq z1Zd6CiVXc_>O&b#<(>)k5;XIZ#nonEwryMo51t#;}(kHP#aqnPTG% zi96S0B-GYcnQVF%T-6amwozkgZ88A^deV81s+45h4X@OV6|{vwp+9u9K5$%nKTypx zrAO~&?8hw8`$+q=rz7uSCPsLt@p%F_YT{IzWA zNxvvzim({l_-CZLP1}6{s*B@0_ZKEZ7#HMNKgHvNF)j-SRISW?+FqfAeaGXx&v0&eZ`%8Y z`YI4kxdhd{?H2bNLu%;9d(NZX(vG_?;?l#~CK`Nfa=*ls+SA_u5Lz)(XA0cO6tQk) zukw`)>pN-J@t8m99WCp0*PPkVOgAN%k?>EV<4%m%mpa%5 z7DyFMW>Jv!9xf0{QyLSRrS&yrU<0oMrg9cUYU^hpfUwgMVPN`JM*k#|HB0EPsI}`g ziFAzG*#>vo&K=?UO?RmwFJ){ZQS_<)M`)y%Yi_jM&qtryhkTFTI9^*I6H~MAAK-P5 zmO(Vf7zR$2UB(sI`2M0_uG;g={_;h1FnIqb@ro{2$R~D>@BG>%55rEmp`5xIqd#1X z&{$BO_1$xt>WCl(;d$zaLRl4s-#!H5qm){?X8h$?1wr<3a6qUOf}5UP3+FJqs?M$~ zq?3w^g>$kinm(?04Wc}fW7B(Em8HEGwx2PZgD`R+N0 z5LBC0Ji?ZnZ(^o4w=S0OiX{ws%Ruv7FCS{OMBUO^ipRMD&mG+=iHw#|f~0HE5t{F{ z3eM4N5d?ul%=!`YIM8Q_vsN}xSbKAae$c@trv8{e(+%EcJN*d^8|_QIkUvhuMaV?< zU>!Q2^V>k5hV=dQWt_X0){v+UtW4F3-9aNjS=oFVh*jo!G@o!D`%Y0V;D^%?1d|}b zzXP^I=VTET4W#Eryr7FIP9d;UL$L-;(7~gKo@WCy*Kc|sT})*;VyyA>%6VByPc@9` zi^Dy7jfJ~m!3y_XCR_XJ!0&j`gM}aF#=e)3;Vg9zvtZM{E!xR18@h*u<}%;53}|gs z>do7gg?dCnLw(W&D~!%)annwK_cKeg^F=@qQl_aT7=H}XKG(Hd&h~JqSC+; zp7w3)B1q8gY$biMvO-B+3IO&bTTsN8GJ~V^o%vhFi(Z^q59I@zJOppw2NsnhH(bv&M4Yy`o4e4r|B%~f@;Rk ztd7auXGuZoTHI@fbe%?|2#xYC_L_p6hytiUxO{-eFSY>=AB*Mo7mWOm8aTpFcW@Ay zdQ=@$z-S*T+0Q^BhDp)pA967gGIw~;E({IB{f<|RN_Y zA-S3yzZgGn^-RvM;6U908PMEF>>56i2l`ftMS!*Nkbu)hr}r5DmGi=c?)=)N`1(_n z=iPfDVVBeUe$mE*hO?wq5W=9M~&`1)rE47{XLZW{6^aIxQ0 z!Et!ISLOA;T`zpGd_3T(CU`KpY;CBzA4ywmv__;tz6r_WYVibO?;EcI-zNMwoQ$_a zk&y|Gn!#~#Zf2I})IiH&woYXUAFCwH9xr^vgWDh^yhQ#7W{g7_hykXYdtV@pB3ZV~Tu@VLc zQy7K>)+!>PdM_mU?o1T1s?c|Xl;DtQHu(XP4}6OHdLz2H^zR};S?4pXesVIY=ebxh zjC1VG(9lA^S0xp5i%421f>WJ(jFX)Uk;|U8@c$;Dm`LxDgYx4eB0!#;U4CuCnPo>Q z8!juf?Y}opYc7&=HMTgho4_(^qA89lT$qZt6S##NI&eY&YqgSF#4z z~u`;Io&(VOm8;smv&-iY*tg@f4_LF%!yUXaS%dN%wo33PO zft&%K2w+{oaf#oMGG5bl$F!9s%tl%i@Uqn0NOjMX@F+P%x{HF=?+v_-MvG6>b0DZQKR1yl$^8*_k^@4 znXXJgj9%INwVOiyO9gflj*v%IHZ0BjPkOL|#mQS=hZ(H6Q9;}RcU}8s4GFy#;vd>t zHpN0zYw$uCFM$ZA#1-ZR3(QDbOdO_<8RtG_-Y$C$Hkg}9@M~M1ygYr?w5@wvCF#u& zXms|9BC$~5##FlOMK@kjv_q8l6%8J5Ot#Zpw40Bgon!5re?fPuvkhO}p za8mU{!utsZDK9s#h&f?};A}Xmm6R^1&%q5iK`-hj71@RG^;wkkR{Er>$HnWks6PnZ z$5U1BFFkXE@6!v&FuQBV8Iv!2_!?3mAy>KJC_O_JwW(#lSkOC)pqc`JKZzldtsv zj6+f&{CaQV=`+Ij1yqoX_b=n{w(`*Uw;IHz`_Ve`o9$TcWyGVvFG%b_w#yoR4jZ zx`Wyt8+H4Y$R6))tzH51t-}W=^iIigX!Iw`!l)&0-}_msvHmVxU$_bfy;en{Kb3<%;tDHG_QwTT9ZqG7WE9nY`}& z=WR$^#r!gFGM29B-V*v!HIhirD<)JgS0tAqv-?=j@6dJb^&n2R4b+E|1r|o#p1 zh*!3DdU`#ytV&Vh!;1sq&EYU6WaO87G)hjDFJw+YoKDH$&`D#(m$6bO>V<(LVR&R; z6RgjCvb3;>c2}as5rQ6s}&&; z{>SsMbTio-cuyFQz(^6@phWB6lOj`P%LApOk0DAPcQ24VDWF+N6-2SJZ~kH8zE|x3 z(@L4BlWvUZUw|s>JDo;bc~&4`e>#oivhUUBQ}Vs(yV9_O;KOJtos$X3X)5ogy?xA; z{^zDuI@7UlY@(XI7Is+4Yl~5*qTPzLO0_h-%Z4ybPNon}Scvpl^)X7>k)id2)X9z+ z-dP3(`i1Q@G}w)y=6S<4O%7UI75`pwd|ec>(0I7PjoOggp0MJh<9MzQ$nnI?w(3`` zT#tVb&;C~*CY{+9f-|d4;Lj`!b8h#^x-hgWz|4^p*m4nJe(RpDx(bBmqbIqeCgqtc zN^}V4rQ^X`GuFx_ykka)f;RauOeBrVLOUS(nhh`LMFa>PX#x}jtzP$iw^+l7^7R*U zaY1qY*GWHLYA+#&nQvMh0A+>n&Z8Y9ME&ewqF0MN0ltI78d5zl!K$p|pmTLYU;mRr zl;r`V1&(q>M${ZhZ8Rjz_eUWF3fkR6wUQHqavDE> zzvbrTNxav47v;HXzOr*<$Hcg{5I<^GIL7T~=3GjfdwDVHQx4eXg#<5OW6|uTbhUf& zqAN{E7$dQP;z(UvJNDy=eH%I}Hr7&H&Ml~so-6H0Cg9%qQ4Fyy;(74cbL?!lEop3~ z?3ntH^?IPB%4Wv2)SS#e-hp6CJy%nHZmE-@Ozqlnf88?Gt$x{{cjZQPYz%QSiijOD+TQ(% ze6cx6eBct%=RG&1@zwX5P0EV`axbP`|MZ4mwNjTv+tUPC?==?~4N$j;lowe&$FSw(un4>a(N2 z_7ndJr{X9y$FDx!z7g%p@F$dGBiPO^v>$rCzhYEx-VhC!@B0;|T@#O*(ERrxkFdjN zGq3{Lt1~)c=e_t^@MnIPYv@g6V!LzS)0^ldm#Lo(XQc7vXVHp8!g*&(S^YQDVH!^_ zeMbYFPjK2=Ex-^v$ELCOThqPO7fX^>TdJnFQyDE~Wu+tDC!oa23u0&yJwk__LvYN^ z+doccYtku}6NTV00T+7p=w{dD@K?E8GM!Vmv*$@A?OP36sB?TCaVR#K^2$V!UBB=D zB#G)1D-se}Nu~J6aP{`L6P-q|c*i z)`1By;%19u(XmLJm!4;V)Gk__^Jl)TPO+p{h#tDX-4jQY=yyVF(@gD+nx|@*Le)_s zE&qV%Or$g$HavPW^D8S;@7op3-q=syS)FvD{3!==NQ{Qcdq^Zba5PyrrN!6XPm+!L z@^Nx)tFno~ijBBb7K+dBuivI!i;XpqxPt+DhUuoK{cU0a1di4r0j(%|$SPPmV6;sL za;vOmW2#}X-LFK{z_3@+M0{8c%Bna7Wiq%$i=)@j$Vd{R%suz(;A+X&+pU@n{nBWU=e)+$?p6~NqaBsbqI(9ecK0+>XT4of)!RYkQcpbu z?5VMhpr|%s`;hCBAtYf7=WsP|9=OYgYAZ)J9H=KWQTjVp7fyd~5kNa+M%z^17Aeq7X*`G+8 zM|iA>jp^?yc(Fof2PT}f`()EH0x0|u*(eGfQ#6ktw;B7cWa;BZvu*d4jZY+( zoT*vPmZK<;`W3WrK%q;4<>^dII>i!ThvI(h&;}i?);#p4jy0Hp&`7=}3a*CEHEj+) zW}K+6R$hVg!!VMf%t`q+-hS1;(9bDi1tP9$zEs6t#jfa*Qp-vO^T*1|OPH4y_x7z7 zJ^boPnP9H+i>P(2WSJLOI^AZwxW=UNa-?w#Qub(=w@vdW7sMiZ>=1GHs@tnSLhy$? zS@ysLOXQxcuKvef>0j=NT<>ulExY|gHt6LigFC^3u-10%;E^ESKy2|gv5e*_$n()_y2 zsCsikd`ovvUaDP-q+_w>bK$lkBHUJ>Q*nsAk&hg-{CVtv-5mP~9;XBo-2UFz{jIHW z9AVbkZGLF{yCi2NYyl(eWcm50Sun7~)}YKXesGzyH#~-t)qv7965pz#C&FNLvxcU` z=J-@uH+X20y8weblatpw=~68&oN?YsylRy-C}M{U*o5w@SEJfs3iXS zp$9kpd(>tL*Sba_JxS@bQgbOHY(E;r%KoIht;k7S-NJ9f3`$6oL(Pv)8;!YyG&|@s z;C>T_*&eMj(F4D)+#MMtEezr5+Kug3HqXW2el!lJJ*o@KE4{wAeI*qlnNXR?!R?lj z>Thep6mnM4a!P)&z7Rp9Xd_(zjV#;=ibk&1ALtBR2!TIEZ61=bQO^oW7Oq|loE?{f zuey(yqshvQ7G$dxxAD$O+*fzP$je{O;f1p4efOvYGO-Za?p0PwJ6oZ5Eo|-IO?G~Q z=`C2x8Yh(!{ne23dx*(g%S=%8N$gKAL=%B}ouoiI!?KbBxpXV{i#jA$&G95+(~#>x znZ9LCU#3GNRhl1gW7c91;4@`w+QEGV6Gi$IvH;f<_^CsSTk`oC|h~*bMOEcAsEhs)L?7M zA$eo{OQZmB_VML>ajfI;F!H2%SF`HVh~f>*L8J^wfqowr7Q#tPPzkTQx5454eI}WX zcxqgVcYN-Zpsj7<7tNj1qbe(vQH{CS_m^+QIquHk zaYx2yUv3Ui{mY5=^w+M`j7{SGn zCcSOorDF4O*d6gP zDbXergT6V#wZE_Hh}FP!D3q*q&e#}Cxb&vZAnIPb(MQ4qp*NNIy(nTHA>Y@5Fvkd6z zoQYi@T)G9q`)i3(FBh}>tM-<=#b~HJD$znMb&q2)9t>rPOF>8smR{yBPD+aomNl{F zomxZY=T8-B;EM1BCZ)}_I6yMaqkOeGkdwLIl}22zZ0wof``2z|^+xZOhvMN$8+Xq- z&bkK@;Z7Dw>yw}`XTN^YN;)#mR}_t@JY>L7Kx^^Eh{F}cnx=cXU4wpj(7k=5pZMlL z4Y|nnIyn4r=8W_UxX)nfMJbu}90PReSAWv^tK6A82f;mPo5m}y%o@43;4=X_mo1Y! ztn5}8Ya5>`nBG%geZ^Lg!eym7C#ax^tl)nB5cF)k^#w|)yBTyjnsesxz+y6!4XAo* z?`BW_qw4J{`%cnAMzuaswEVZ=_(JsAgu_{-w0l4S23X5K`rhq$(jPz1{Ca0JuEk$P zsM5uq&1(oVx4Dn224sS z8Cn=m^Z-5)p<9_5)5y%hR=KyDS0s6vt$S+G=spng z*M6Z%&{plmKvMNLKiNL+sP^kd*{Pg}51EiD@n8Wh&Pa+sDN$yk=>|?)wGNE@1>!UJ z)*so|gyxyW_`E3S0RY6lOw+-55hJSH{TsmK@6Z1=$Rt=q`_#;+2wt$v?RCIt^owaK zp~^Z4SkoLrElh&^6YX~{jTev$KqJJOVeue~D<>AT3PC;KaAG*hU)z!mAC7yJsi+T zIB1WnSQm3qX4bxtgKzmg+ zHL85PQ`Hb)JE;0!!{`_=l+x1cU)TDLpRYVcz@9YxByA{YvPNK-M=0?&B1Vu2Fe3 z;ln{lX~havhxq_gnHgsP)B?tpn<<-9SE?;rQ_n&qDXI;VoSI9=%gJWiN6GYNzL?<`&G{(ilf?>Q^xT31FuSL|46U^{aKQGE@>dAxoWf8qIk2_3SM`4lCB4fEo;1| z|MJY2##ry=02f=r^UkSlC1SLhhNx=-r~8L&=au%+H8mIknwQ05NJibekClw#nky}y zA_UhO&gg9kB9HybWPNi0gZ$@bmV;xhr}6I&^TO51+3N~%Rd+w(3P)K5Ez2xcyr{IX zra@h^NG~s&--80o>h-R953SGWv8`lGfRSCYDIgOqliA+IOVd`s^M7KHHT2)Sf8`(O zO2>1Oe4c=FcWdG!|N7y05vq-j!<0L!YRg@13-k~zFAU_p$L-Fqs52Oh9lxB*n4~jC z^md7A6u1ZCNuCuR9DkedWPG^Xf7hFoTaW4Fx<>nm$*@4fOupd(9$kazWEo zR@JnKhQaL}pNqQ(Q4LLBZ>F3(5dI`w_g%!AZiK(*lxc?#FWs{Z^6WSYk-K$bi62_7 zek(><^)1tIqOgcb%MB(mX?_WDOqnqDjF_l3)Gn1mY1W8VOgOv>4ZNn3uWM0(EtQZg zqZ>tdz6(K)U!}}=<%`|Ey`N+cP)kz|BsXwcjN7B(qovNQtp$Q3B{*utN+z-^QvY`R zyu_46IB9-ukfc46<#d*dSqR_34o zW-&RK`>7z$&w0^Yb+W0jPF&@d#U;Cf6*KjqV__2cwJ*HuxdP5RLwwO<%ST2~WFvv} zWpjQ2!PT{?n0JJ^?6`TkUa4NUg{2v*sWG)}mV!d~F9x8J0=Ld$Axh)j+cJoHWuAknA-KL`IYCu5%+7DxF4Ww~8YvRn zfpo>4G?P8upPL%|wn>MHl|r1iIb`yH9V60owZ+ZK@pJX=;e)Ihiniv>vPm2i(NN9= znb&ww&IJM2>oZ?31!x!%UhQv#3Vd8h`Nv0xFj`j}gyPjS;s? zEw1NDms~c-j?yYzIx>e$`_2s-a%Zr3yC1~QkP4j5jO+I zJ?a;9ESc|o6(PKVZj@FDkZ?E`C%Jo-;p`zQ8SB9X+K=Glt(8Estxn(}b!GH!p|s`{ z>~!;i*xo5kLwc-Wa+62Di_w|RBM-GA5ZaEt9>}v(j$>Rfnq~I+DwH&C$j4?WvWdS08m}rc+-fD2Q-+*vcA9DQ8<4ECbQ!6TW zvv6G@mv3>>-8U&)ZtkK~8y<*CxuRh--aXOhv-g4me=$B^Y!#O+U{OZoYIZf3wDo4Q zIvRMn{!MQ!gUQ3lBjQmYr}~O=Y3oA?7fc0#lk?5UvV z(w1{l)0;G@@%rn|dKc|)lL7tX^(bNSb3|*GcYw zBg(~7L|wWqv-xUKg;3&gLD_ZLK1QTng7^fU5Q0)JkAE{Gu(EDsUF^F&7XP)vZeLGp zLWojENt872^lMzb_(_(Qv(Yd)witqL4vjKmuO{}R4a8ml7bm;9wsL42+hdxSv_d$S zE8FuEZvWTM-XSI2XX!L(kL{z$Pg6#!Zw71(@iamJwB=zpYs@D>CPzlOgjJpVO8O++ zDaNcbMOsQ|a$9cIl-Fl=%qcH5QD!Yi;b(-8afZLkuCO>3hXn1Pj;iOWCT2!I1xE^o z2T*fqn!n+2X_dvq#8Y{6m*rmMr>MsGaw6tgiN_|y(c*AH#l&jnf2Sl8h4S*w+FX4j zlQe0QM`*Fb@De5mScT&?d0kQD=zI&Bi{#ZA$5#ES^w-30FSBZtb-Yr`3@K660r;7Di*Go0%AXayUIJu28zT?oI~A8moQBp&@&PKN?{fXHHgk%9 zGCP;;(pUQXVMJrZ z`70_pR|dwV*=JrH_$pOMbw4q5V+ro)ngWpq#p+xWlFyLIN+ME{(+)yK%DW;UPe*6Q z$0KDFQ#e@{t_pv170IuxW>JC9R~KuxLw2iskK9js@wV7hs`!-{hxg;YT6ijE_2J5P zG{?uieBu3W9l$EEgE6ispHPx60 zyK09WLXgWfMTqtFH`Sz}7gz@JsJfapy4ZHJyLkH@qRL_R$v5?2o?TUmgpwI!l72TR z`KB3d%Mf4AlAM`2G22R5YDa_@zc!Ym$j7Z>*h@jwY1VxaTCL?; z6w38Qc}vxLl~&&2GOZBupHuC?RGW%&Pt(7B{oG}K*t){bRq5ZWCq0$qq&(9mNv8mi zeT9){qG*+53;H9Fc*#5dy8G)+=hv~`WRGIHS$^S^PS%^ILIHxRKbN~^v>Ep0{KMotS30ie{2}A)kvg;cu zB5U1w?;6vsk1T?%^+S)vj#_PB1O6cZIP)#o7Xy6E6T9SxgOJ_s-hjhb+VgV*y#YqE zNV(V2EG1i)CKhM&XteO(mb&jA?|HuHFY811bl=yScY|)<@%h!qqfd2;`{r?r02(Zp z&1OY)0|@6$Dhp(5E)|~R1x$I!EIj6wiw8uMgoEJ{w!zafU$Y^OT3wH%6^|cnx|!E_ zi4s;_d2J^3>n>Wg-M6cK%iZN2dzgzrho8DAI7z+&$z2uI&^Ph7(HaF@LG}X8wm__S zE>{8cwgY9tJi~AMc-T_FDR*!Jx*>DCa^rB@K`cQgn-(ut8ScP2DP#wot$A2nQl?dv z6tks~#U-xC%XGse6d`~mf&yzSnqai~)<>Z{JKJ{Uw(FvpWN}QB%ti4H(^a=GK1;RH z5R;{q1*tnltkbX`wRBDC3B1t8>$EqK4yX;8#9(ws=3sdeL<{7Ve!G!Ad2S78OaPql z_>vTE3w~f2dGmTfsD-_e5#0Vp=srD-{ypzA`mVC~u*Ur+-`*=X+u&-z;-Q+D1T`;l z{=Rr87}>~}VuaDkap-Cxn%-i&2SIqA53Rn`}YtX&=IRTN7 zOma#tH`Hf^PtCYFm2Zta$xKwA>`=KvRF?9$^jjEW1mN0}1aduQ3fa?t%|jpuJ!OU{ zA3iDxBjj9M%O=I>o<$g;MRiVhFBwdD<2u`1s)k=hzg<>uBfL>uI{ZFk#b5R(S`EwVMYR|Tr~T~wr@8iCLHz-?aFl;&LVpvy8o&aQK0RKHe0KvGS% zkJ?V1595Z1dI@d?5s)umk18(K)(5Q*u!DbAi|DWUf3jzh?0DySL!y0Gdpmo9M{ex3 z7;ifU$gq`aM&t1S88&Z;q@-PWHpZf#ZzP=?*iQ5@tJQ|f(c=J`fdZkm&wix zR37(z1c9L!6+&kQJn7J7rCzSm@Ab?9|X9&+8nPKkJ!xYf%VTPhx-{ute@XTnu26VMZLv|hOKN>Fyw(U=aHA*_yqZ3z;B z$axO6wv|3*GA#NAx!+Z`+w2_(pqeV}>ilh7kt|8~CAWJazRT5vX+IhxEGZ*$^%fF2 zI}Y;u&;Jo=ec{a0%Jfp=LI)nqcV69EEk+fU=4-#Q;$tMIbT4+I>lZVvH<*7>u5Had zbdZYBBltl;pCk5WOID#MMMviwp$8NjYg_WmN~tDdbh9ucV4$Z(g10)e0G6Qslkn{~ z((ki1k;OSDPb^rsU*>Mcd-sHOw)!8oTv&U4srd~3jiTeC zfc-(#KNwdryA16IFRnMA6{WGxYQRskal(*ygst^c*KcVT{eKWDXRI134~@r!cU^L& zfLL)qyj2w#F9-ZgAK7Anq=p$bVqZaGoSTN%P3$bK?~OZ^b>>4eTU7MX>_d-0PrON z9{(v|`|m7Cjeif60U*x{q5j$z`2UkRwa9j_tY6>T3N`Y*1*QIXgAQ*fpuR8G<-H@+ zr+xEBHz6A|>sY3va}tp;1uZ}QRS}=KKVkdjB#+?kIZ;Bqw?}69^06y@f)bf8)K(z| z0mE0)ji(ddOH*Ku8+fR@@b@?k>K-A{9v7UYCxpgZTLkc-gB+9K`+S{&J2WC14{msE z^9(^LVRkne)#?RI%MF;nJ2!a63uakMwxd&H6PQuu;b7xJhO*0QX!cjv_9w=4>ot$tr?%HX)0YK0sBBoIz}l2z^;GaHWt&*s{48j##*htI@$5m6JG>>jqra zpl!o+2K%345u4z>&X>tyy*4@`r611xcAf3Um|B{*IbfE!d@ztX1@;lSlTo}JO%`5} z>j2<^icy!(LC7#0jGiP*$0fW@|Daqd>3 zT26&MfmbQJ8ZH@Y`UZR8(4DzCnuYg9wC3r+eTT~#6m7>@Ww8qEZbN~?vWh1fox@-O z24DvVQfWu%jWXEW#1&LMOveoPl9TtCaef$d8rp zhGK%^A*@bCO@6zgjnE5?-At+t_R0}ShWhgY%!b-8eB?#`cJMH#OX%eLo;{srY7$u~ z`1wRvH*$uoc%fry>U>;{C@Km7$@Je(jDKw!FbB!#j+Yya@p$66;f(6cL`0tCtzLzC@wVQ|1`&jid_;~y8n5^K3C z^21_Gw)CiaUlf0i7_!wJC&vAXR8tBmetZ%&AW4RhqyFVeXd0iZ7SK*TbN6xJMaeeH zNF3mNXN1$Fo~ABQFURV#TJvv|#4=ug`3xApiAR&1I1QAu3+!UwqOeR|?zkEAH0Q<4 zcP%P*AYUUfm}phtY*-Es{@fZ-isYc!B5m1O^9%}u!-*pJ>R_`upkzp?l|Nf{yyc?h zzrl$OD1*B<2wo?Pi$Jcp z$Uz;=A&et1qq@hNVRc$9(O#Ed^eGl(Q0PyYA*KNs$f0}5r>IqjPoJpt#D(}3tG3l` zoN~OSRzm6p@7Gp0BE2e~rG8yWsQs|EAMAdMpuFgRWZPkd>WKCx8E9w#d#0T)b*L-0 zFqrbtu00|aT?%Agq+wnS{GH-)Pq{uWQEZ<&Z=6x|c6IP(F#O^7P(-s92LMw%*3bE} z6FE8TZB!(7{UYG7eG~O|H7My^tyvqA(K}{xu%4tef@Y8Rb85wH%o0O_cwd@o1jB$R zFSbUq0CQD-5#xMZEN;|$QD#wl+iP8tjCg{>B71Z;ra|5@w0gT&pDU>+Z2|g_Tn37> z#jR~P9Gq`K0MJOQtNuXze5LIvlD+MWa(*eViAmAaJGHK95w40?1L^78t6_yW{#O%uYcyO+SQ#{7%(b$Ah!8l)6ZIDUv}u3xK{5J>UAn<>=MW?2r& zE#jCd>3)d8H~c*6Y>2^g<+od3~Mf{z$4_;cmkYA#iDCVEiU)4G&4a55@eqS{ptpsDs>qG z^{YBRWrdYNL(M4=uZ}GGP!0frUGv*N%UuyMT=&QK5=_>@&Z@Q#3o9bfe`#Tzf8B~K zu9L1k7Lt!UmCvzI-9Gp1&B!A}@n}mqXPni+UG)O!C4aof-%+&MBdy6t7TB2*->*ub zaYPOJO10@4-%ymL@dAaRjr12s^i*3sS>@9L^@e6X9VBsls}op1qkpizGp5quLZ%&a z#ay<8xGKyX|5I#->ts98u|QiVT^RsB4WU2wp)hO>4KflivoH*pi|}egiobP zhfK@M40%2O5=q?bnatt_N=5l0vbuYlooo_vhY3hA7psgrp_1HI^7YKsE_gnt56V&l z#MWbHj+-Soe!ia??4j92P4}metv7xPPK7CG_G}TI;Xhk-F>Wd6#xZ>ZXh*sL@YJe< zSE7Ns^QeOSTdG+H+W$yzb>=Vpu2uhcCa%mrnePVMCxdHK&$ zud_JJp#QgRu1}fxJDR;`ekytQkPS`8$eI!gD1u}XJ(I2dF<_ExjmafLJG+3C1-OU+ zjfKlGSIuut>0pOCFCn7qT?NgAS@ZfxzRNS?c+M^^j#_&Lnwcn2mS^3AQ)tJDL`OAU z#^l&)y)S{%yqbZkry$ZiV<#&SLezLS2j_Y5AC+{fx#Woq14mc4(L5Z58 zSk^4!MMfs6J?Ak;#@7{W*ag(Hru2V-(&o}QP-_xcgU9~<vA-N$_;R4Rv%#F~Bc z;#I7%FfDLh7Cv2@p4)5InID&*_Q(hH_%VS2t~KhFsPeU|o6H2ACxRa&C0= z)Z+fUU6%$d5WVM1rv~}lXglSBw%4hZ(ap7*P{ym0jTtwLbe%RC=9bDUqS7ZrO67Js zNH`Oti*C_%!loW};qM{YEL?q5e0V|5FSmpJ4Qib(p-SXUPtbQkq1H$2Fg!~~9VFw` zv)*l$v`rx%oV1w@uz3{nID^Z?C!ZqMXkOv?#kv|ZST~lf?&D2>KA>TXhHA@Ak$q_s zQ~T1uo54x4G1WA1(!Sql8zMVDgy}^PJ9uNBREb8{lq-c*_FQm#SBHM$WAxmG+8uCYTUxY{Ma! z<$sZ7VI8Ngdi>Fe$-n0H^cAa{pQMG3i3cMQJtSB-T1A7%D&fL29G_~_f$fP&_j{~Sx<0H>TVC>|md{sngkuFAxzUIjZg zHZO&)UNIo#%3P18JsKOn@xGqstd+(|39##O0K2Y?V|wnYxq_=C;;*ZdWvF5`NV5@W zxUr0SHl_2HT=*@I7{IQW!rT2*z1+aV z($jKr_jm$kOO&@tMmZ5Yqm~N??r)BnJ%Cs2x2!okF}Q;w1mCj^l)Amow4=w>Snn~i zF|E$k9~;e0AnG>l^9h!2aWb1SJAU6I)G!Zp46eQl{-|w^p8XJNU+?|jmrOoPvM~QA zCRsI!e>TbTjQ=so!mgNUnF1mV^99tQAk zqTJ+M3puNWi|D+KJ#@L$Qn?#HrfsrKxdudKU1Y&*;dIYCoeyfzeKSSQAdgO=%lx?) z+*(N5t*xQyuVnd}opVgUilpafz)_X+XB$)u1m_$m9~>O~=gO=qO($*L?~i4EwY$Pz z9=ae%k7m}my-`ZaV9*7bEbg&cz_Trpj}I3+s?wbH_1X>iuyQ!6tj{zPm(}rKFoOa3 zZKeF^R_L|Gajp*S?a$21MhAenHBms=V<$4d_KB52H3ocwiA-ww)yJ0_E znsBLJ&9?Lexmm$W~wk!od6M?a5*Dkl>-8 z|GzfQDrtq7URl^K-5i3KFmzJLNMr?6@;Bq+WR;W#tsw2Nn8K(h4NtL?MPsE(QR&Ks zR1y4U7$ZOy-3!)g*@?~vv5F?1Q=D_dpT*e<=Ijzu+<-fqE$b;A;+Z5ioceO zpL^aORsH~Ml828w>Tk(7@Z535UVtp@5|7>cq3c4L(cPl4Z)V^=>-pZg%ZhL^jS=tf|r=o zNF2h%g_ESHkMaE04t}#;Z+%xl)vexJsZ;G_S?M~lc88ZY{)h|@cRLr*?*-#-0?RrM zZcMIsM^(rCy18SujGz+X_x-3(lvBo! z3_YS^0htAsf2-j(Dbaz$;)MBh5>0lGW1;GEmE$aikE3!&GOy!`*yuC-m&vop+6TF zm6PMbc318NWmdPYobS#yNKFCZh$m8KPdCid*s3^DNRxHYq$tXm#}Vo;oiv!-w1F~` ze1pD}3=rM!wLAJDO75e40*lS~2l@_Wwfmg<<2Js~;l}M%bhWsQ<4^2ywYi^1+3rt& zZX~@}J-WBPk^#bAg74gj$=Nh>M$&1y1nZ)JoMvtFK;iur8uWdc0G+`VlY>=ByD;D1 zuR?cML&LhY14K(?tS>i&Xkv*9j+AAzzxaHNpuOkq7Yde7ystp6P;X(mRJ)F;Iw@?{ z$C?&(rIYBePObak-hKW$7fNlTTdS*Pa<`A(5{+mBpuDr7H|9 zAsFc~22JF<8v8jQMd~UUMua52YT&QdhGGzs8R~8WcvrFu`ZVPI{ z<&3~h_aDr)kFV}u0MuB(L#V$knacpGsm9)SF3;(r>o>L7Chr)o_@8{m;7|YJt;N+d zfBf)~PT~Lk8Ss1mD@pTDP|p8Hg3AX!M;PF#{E*~RYcs%vadwRQ*YtGm6NaFwkX^0X}8%pEjjY9SjkVh}9?E?Q5o1gi7hDe` zDTv?DgybMlEv5AWK!sK!1=}*$(1ia5&7u!Yf{4frQwLzFnwXg7DBSx1G6K71!wSAB zsus4$^8(^m#iTCjDOz90Krr4btrRBuf~rNkW7ymPj_N0g*Df-k%CizlMN zcgsWl-;H^{HRA#(M2jD(ID1RIUbw-i9Z$MjoAB*4ryJ8|V2NDsY%i$`9ScKPI1p0( zzOcs=(`^rmYLl6;BIQf|z11Y*(`x*ZP|4t9T68;yu&ONe@Km7R)j{l3)z!Mbz0G|V zp{xF_6oEzdQ>u03kE$YSh+U&`!#9rjIw?kFXIk!w514HAk7Q{K9#BRb^qC+q#!zmn z1jOpo*U3^) zhG!r~`phDrGjkp9M_K9KVwLpnp+$qLyK!_?h>>1M9h_PF{}tN86x)K9L6aUZukDK5 zFHdO_L&@dSExP3+!hf(NM6Ph~d@qFMC!opw01=yT4Zisgpmn9`6P-!ge-u1mV*u-F z11LHu5~3J+OM8nJfM=8OcZf{;Nw5>IlK&QS;cOl}Da;q+PsB7Val?oV&tnoK} zc>x76V`I7$KDHD@;3_2A8J2*7m6}1G>x)QZLjqc`KLZ(WE^`dzo+ygov3*=68RGiR4d*&1J3B1`L+w zJ|oF=hUt&$it(`DvF3G-4EZr8nbLOXOy%;-*rNSIm7}vaaB&X%TdCE5kc->3sqi@T<+r`zcX3*scU&v#j38DD^fk?@Pa0#h%#k0NX_0`izS0m`tOyuS z)Bhw9P@H}A53lcKSziTKy!qljz+Khx2o`Tx`@*cquZPHM!?p<93A(Ck$}bQ1_gGq2 z!u7i%n^10H0SO`D=tpwM-q|AdW|j&Q-NRr_7SS#nJtfZ1ua>W*p?${F1z4p+0WH{H z2C_y017@=?cb^3?BhPq!xUMY^SgUE>Yq9~O$&K~_HKBcQme|1B(2OgwVEtIpi|Y~@{fSQhw=Fw`p}`U`3Pa{@`J$2ni3ogvzoVM>9KFpUht!1?lqdnvB>PYg;NPg~0UGb7V>re)r9BmP zr8HbuuQ04{uCEps7;tKu;e+5T7b0Y=xVm1a@(|4qQURiQuR@t;lsKbpx`0dxX4zx4 zeyDGc0St6MtqAWl)BvDYpK8vhu+lgjybaC}-CuiM8o=uU=MqjA?6f^3QU5Iw&z~ZZ zoIIQ_{ra1|p9eWb@4YGX-`1>7ml()Y!*oO{S88;hTgh=|3<-Pu!2vmK)RmR99W#?%#g? zdm(kiT~J2;FVMV&RRAp7^zYTm{{Q=E?3VLc6}t5z_K3oYhfB(9ttXUVTJW2TS2)Ro5gps6r-S!&RW^3JOsA{fXO|bGu+u zU1r}%vf}0Qv@Dlb_xj(8;RqHZU-x||MEnTOV-7$;La^b4dj!6BBP0a=2l_7kiwsq` zGeW7X`qI+Dj0e6ZcZ>Dy7Wo&HM60wCXjwCb*~)W~7I}GXPd!8$k%D4%@b0+Zh>6Kc zmcdekfc^o&%WA0&2jS<&DK}h;f2vpjmyBSsuK$zr1PzdP{X-8B-W>K1bn{UwSS1Iw z*X-AN7;xrlVM9|?fszKc9+nGsDU4a{#R9AU(08IX{`Va>{mVBct_)~0V`gxoe%UVX zHtx;sHAs#kRzL+-A*Gh`@1ZYL6s_mVb?NiJISsCI|3eVo@>dcSZg{!z&uxPFy2cmA zH;40BZ9Hca;!wgu@+=+70sv!q4%nE$-C8~*YnL;%YC5y382h`URU09D!S{M{pre1-54PAX1Sr(Gs?GY@7GcG>;ly^lCU@JJe>Fko)x85-}0cuJn>wb#-wE;k{? zuyo}Zz96#Zm4!@yhY5O|v}eL}a2w5MhSx_>o<>O0iYOdF)EN$sdvBQryH;O!*=TEM zM%YHx^aH?C^%I@De0f1ae-L*D3MY{&CGd2IXZF9PmU1T}HYFj&rJ75F4~3`<1Mmc+ ziDGr7u6Xh>uZKS8m?uV=D+h5qOED=L7m<-l%E_-=Gd;1ttvP7uF=?){{KfU5J%8P> z+iUE}FBafIg%0drEI^4zT##-)01@?{w9MPOfGDozMa=Bq0g~gsXBmO?#6Wt%&I9(M z6=CVBN~ zmYT-R|4}YF?*q4Z3O0y`*Q@SlI?4x4-w&Lp_Vzv-{yY7l8RNm==-6+dTksT>d2`zC zY`4a>r!zLQAeoP)>`R%RPiV!W9=AS;P%Zjwu{u@2N&4Pkah0L+^0$X-Mf#0G&gXKUt2H-55O+);@n8PI0+Zt|hJ6#r9f4V`f zN7<0N&z1||btGZG6_vZ!&3o!Lp!wpx@Q;(O+@PzapGRSBsTUbU2J-Q`Bgc9Ai=lyM zFn}5{q#E||1YmTJkY19G6a3qdRKl_A3R!VZz<8Gj}e*3Rx8JPlFk|wW>-@!7g1736pE*^v(e3 zN`6Mn!!BzgmG9LJo4}}W#?TJ#PFYZmvRs;h)7bA8kA<-i0l+0kkqNluu08Bk{ms4n z6RTJmm<9fFzy}4++a4ie%yK$lh30ix;*ASmZAVv}E=mRh@>g`QK(22p_B=pagb?f= zX}-+`6;5pXe8eJu(u?Q63W)Gi!uJ2W^H{gk`*nipC!M>2zH-S|Ny9zCZ}m-FIOMou z0!^d+))_zS`^_HW9=N#8Y1@rG0(arKZVjDMG)cnxw3@L>_{i^hoFpztwyu4xm-tv* zl-I8hF5)TQQs0hmCl0l7&gcLTM<F4e&;;S3jm#O8Rh~YkQ zn;kNY-!*cuSN`@0fJiW2&Y{h9@rUb7Y1z`s*2>>AKpv&hp@xJ_2VkUS?}iia+M&MC z6mp;EQ$GtW{EPUibyYOo%-SV+k5_GbEikLHr2L#Dv(c7MK%qQ|qMK@A`#>g@<+5Vp zo0Bz_TU{}*xWv?ukx==EOfSmH+(!Iq2uj{?V8J4LHfk zjNyP@=o+ClRHMFj^=<6Z!@Kg%^p?$R*Jy!0836x)f3&%2n<7oJP6#)D z7+Dk$5QV=5#KrzWhMM-2^@bJurVdd+^1-%fZ~eH6{anQ7wU4=AQ(X-svu`D`qCdUL zH1;wy2OG;YO`Yuq*A{jE2}hU)a(3DT3~YXs2>5l@Ii@x&7=kzV>FMcLd$mGA{N=)U zxM+&-xRsn2;v+c`_jF@}{)wZQw86)Vtbb=k2IfJg-M7v?Jz*8i$`Z_g*q6{alCQH9 z(+u?{HpAC6pVpdDDI=}U6g1j$SL3PIpOvAs+TmlsJ2UgjH`OP9gR11sBl!+HuNlg0 zF62DJ2=4?NK6rroh3We@!5MSke&h>H@E%p9%D81l_h=_eLHrdIC_)8&(~ETC%X5Ov zZMqQZNVQa791+0wr(|AN;kTh^`LNRSw>n|{LUWUoX3}AEpC$%Wx~YBj&Fa?N%1b?^ zDX;V#*l!s(qSF6|w8n+j)@{>g?yT)Eu zQ*D0A+s;_b9~-Y$nq!@G+~p&B?@JhSz_ z6uwKHI8NgitawkV$MAk2?iNN?d>sTkdV=#}I#QqRay|*N;a>TO+Ot8J``ELgutZbi zaKs`!s^Sv;ND({=JF8qwnQhTNES00Gd7b`dDQB1xR7gates4)@Y3wbeOm~*JV_+`( z#)XGG))&@Am*1-4?>%a{WR?&FH7Qz)3Fn_W`62Sm_^yZ3S2!}Z5-)Ze8Zh6~b}dNF zkJY<~#d1-6Xt2_f&B=V9efTRg_hhqYVjtFAqz@Ps){(?WBq$x(kc)Lo&o4pPy>0Vt zH#_v1E0?dSsg=B*n=i}9rUwfV$NE6$(xVkF(^$@DVKp^8w1jOOpZ-x<4YyBTAUNm!=K|?XDhI{T#?hkiuqBiZJm$4nZ36Y16t3Ki$q(&)(!Hao7rOV=zs?wHvmc<_g zb_MmWF4tH3a2fvr!oa_Ei3aG>CG$dp;9^Y*ji54NRxmgN71!i9@49r_asR=c@V-W_ zL!~VoPMfRB-)KyZ%DLKFW8~n3nb01e+1Yc|3j)Vs84K)kl$AY+R@QP!vGF6U5y<$J z19D~P2>zlA)GC84;#zB0zTVH)n9QpPlCg$~?Qn}cSrm(3Ihz9e)Yj&*iQ}A$(f#|L z)R=>6!>N4ZfLS`a^_6HiE21ha$bf1vx&p+BtMUyoN170tNSx1mzGfLw9)?270t+js z;E+bbMm-%n$Tyx16O)yi(d$hXFMnPj(O3Lt`shi1`F-gP?BS8kTBIm(js+u#kxtODZIxPX66OUt= zD~J(8>)UvOv}yqO}S9gB>3&I3zi4a}yMtzUdD zy^H6O&!acza)O zCd^;&L*L6QXHf{pcgvi57jv0cPKSy^|o?0p%H3 zkrF}dB<@u|0Y&T}v2^nsjm-C9wp-Wh$}xy9Vc-)+LwYZ$|AcYm{p4$GMt|s5hGg z50ch*M>;y*f1d;;z$AbrLI?qZ=@i8IbE$h59%|39OL^%;iieOX=&+yZ);SiL=IAl> zK251m-F}w9C8)GayIOsulonbFHwx`Xzf^EbZ=o_9wvb9b|8nKd2*!1TnvcsTWom_9 z@-16?w$AQO{ze-~=f)MhKKtWl$)h=vmx(j}t?$3sexC++f26@7@QXDipyYO2`CBy# zg}RH<=G;2ArFUKtfa6F6faFqI_|l1!ZQq0CvA6Tjst5$a7*HTfC)qA@AdnXpu57Aj p1d4xOKfU~ePTmyq=e>^-6zo!(8%U5I#v{Pzs;Z7k0n8%s{{X8xs~`XX literal 0 HcmV?d00001 diff --git a/pi4micronaut-utils/src/docs/asciidoc/img/SSH_to_Pi_And_Run_Jar_File.png b/pi4micronaut-utils/src/docs/asciidoc/img/SSH_to_Pi_And_Run_Jar_File.png new file mode 100644 index 0000000000000000000000000000000000000000..6b340cdaf539e2656ec3281dccfaae254cbfddc2 GIT binary patch literal 92880 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 WBA1pHj=#Wva!-_{%O1V(|Gxm7A1_n@ literal 0 HcmV?d00001 diff --git a/pi4micronaut-utils/src/docs/asciidoc/img/Using_Micronaut.png b/pi4micronaut-utils/src/docs/asciidoc/img/Using_Micronaut.png new file mode 100644 index 0000000000000000000000000000000000000000..9e71623f2417da4c85a31a6caa7d555db458861c GIT binary patch literal 129198 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 Date: Wed, 13 Mar 2024 23:25:19 -0500 Subject: [PATCH 7/8] Fixes LCD - closes issue #116 (#184) * set lcd display to 2 rows instead of 4 rows * test solution for lcd * using i2cconfig in the lcd display constructor * 32 bit note in asciidoc, new methods and controller stuff for lcd * only working methods, and log info * Added write text to position --------- Co-authored-by: ruthvikm Co-authored-by: Ruthvik Mannem <116761292+ruthvikm@users.noreply.github.com> --- .../components/controllers/lcdController.java | 47 ++++++++++++++----- .../components/outputComponents/lcd1602.adoc | 7 ++- .../outputdevices/LCD1602Helper.java | 46 ++++++++++++++++-- 3 files changed, 82 insertions(+), 18 deletions(-) diff --git a/components/src/main/java/com/opensourcewithslu/components/controllers/lcdController.java b/components/src/main/java/com/opensourcewithslu/components/controllers/lcdController.java index a53b62e5..343f884f 100644 --- a/components/src/main/java/com/opensourcewithslu/components/controllers/lcdController.java +++ b/components/src/main/java/com/opensourcewithslu/components/controllers/lcdController.java @@ -5,45 +5,66 @@ import com.pi4j.io.i2c.I2CConfig; import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.PathVariable; import jakarta.inject.Named; -//tag::ex[] +/** + * Controller for managing LCD1602 display operations via HTTP requests. + */ @Controller("/lcd") public class lcdController { private final LCD1602Helper lcdHelper; - public lcdController(@Named("lcd")I2CConfig i2cConfig, Context pi4jContext){ + public lcdController(@Named("lcd") I2CConfig i2cConfig, Context pi4jContext) { this.lcdHelper = new LCD1602Helper(i2cConfig, pi4jContext); } @Get("/write/{text}") - public void writeData(String text){ + public String writeData(@PathVariable String text) { lcdHelper.writeText(text); + return "Text written to LCD: " + text + "\n"; } @Get("/write/{text}/{line}") - public void writeDataAtLine(String text, int line){ + public String writeDataAtLine(@PathVariable String text, @PathVariable int line) { lcdHelper.writeTextAtLine(text, line); + return "Text written to line " + line + ": " + text + "\n"; } - @Get("/backlight/on") - public void backlightOn(){ - lcdHelper.setBackLight(true); + @Get("/write/{text}/{line}/{pos}") + public String writeDataAtPos(@PathVariable String text, @PathVariable int line, @PathVariable int pos) { + lcdHelper.displayTextAtPos(text, line, pos); + return "Text written at line " + line + ", position " + pos + ": " + text + "\n"; } - @Get("/backlight/off") - public void backlightOff(){ - lcdHelper.setBackLight(false); + @Get("/write/character/{charvalue}") + public String writeCharacter(@PathVariable char charvalue) { + lcdHelper.writeCharacter(charvalue); + return "Character '" + charvalue + "' written to LCD\n"; + } + + @Get("/backlight/{state}") + public String setBacklight(@PathVariable String state) { + boolean isOn = "on".equalsIgnoreCase(state); + lcdHelper.setBackLight(isOn); + return "Backlight turned " + (isOn ? "on" : "off") + "\n"; } @Get("/clear/all") - public void clearDisplay(){ + public String clearDisplay() { lcdHelper.clearDisplay(); + return "Display cleared\n"; } @Get("/clear/{line}") - public void clearLine(int line){ + public String clearLine(@PathVariable int line) { lcdHelper.clearLine(line); + return "Line " + line + " cleared\n"; + } + + @Get("/turnOff") + public String turnOff() { + lcdHelper.turnOff(); + return "Display turned off\n"; } } -//end::ex[] \ No newline at end of file diff --git a/pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/lcd1602.adoc b/pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/lcd1602.adoc index d039c65e..693ba2dc 100644 --- a/pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/lcd1602.adoc +++ b/pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/lcd1602.adoc @@ -14,7 +14,7 @@ endif::rootpath[] https://github.com/oss-slu/Pi4Micronaut/edit/develop/micronautpi4j-utils/src/docs/asciidoc/components/outputComponents/lcdScreen.adoc[Improve this doc] ===== Overview -This section provides details of the LCD1602 (Liquid Crystal Display) circuit, including its components, assembly instructions, and functionality. The LCD1602 is a kind of dot matrix module that can show letters, numbers, and other characters. The number 1602 describes the display: 2 rows with 16 characters per row. +This section provides details of the LCD1602 (Liquid Crystal Display) circuit, including its components, assembly instructions, and functionality. The LCD1602 is a kind of dot matrix module that can show letters, numbers, and other characters. The number 1602 describes the display: 2 rows with 16 characters per row. NOTE: The LCD display only works on the 32 bit version of Raspberry Pi OS. ===== Components . LCD1602 @@ -100,6 +100,11 @@ e. Exit the configuration tool and reboot the Raspberry Pi with the following co $ sudo reboot ................. +3. Make sure you are using the 32 bit version of Raspberry Pi OS. The below command should return `armv71` if running the 32 bit OS. +................. +$ uname -m +................. + ===== YAML LCD1602 uses I2C communication for this circuit and configuration in the application.yml file is as follows [source, yaml] diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/outputdevices/LCD1602Helper.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/outputdevices/LCD1602Helper.java index c20689ec..e51605af 100644 --- a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/outputdevices/LCD1602Helper.java +++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/outputdevices/LCD1602Helper.java @@ -24,10 +24,10 @@ public class LCD1602Helper { public LCD1602Helper(I2CConfig i2CConfig, Context pi4jContext) //end::const[] { - // The i2CConfig should be used to define the rows and columns, not hard coded. - this.lcdDisplay = new LcdDisplay(pi4jContext, 4, 16); + + this.lcdDisplay = new LcdDisplay(pi4jContext, 2, 16, i2CConfig.bus(), i2CConfig.device()); lcdDisplay.setDisplayBacklight(true); - log.info("LCD is set up with 4 rows and 16 columns. Backlight is on by default"); + log.info("LCD is set up with 2 rows and 16 columns. Backlight is on by default"); } /** @@ -51,10 +51,24 @@ public void writeText(String text) public void writeTextAtLine(String text, int line) //end::method[] { - log.info("writing on " + line + "line"); + log.info("writing on line: "+line); lcdDisplay.displayText(text, line); } + /** + * Writes a character to the text displayed. + * @param charvalue A single character. + */ + //tag::method[] + public void writeCharacter(char charvalue) + //end::method[] + { + + log.info("writing character"); + lcdDisplay.writeCharacter(charvalue); + } + + /** * Setting the backlight state of the LCD based off the boolean input. If true, then the backlight is set as on. * @param state Boolean input to determine backlight state. @@ -94,6 +108,30 @@ public void clearDisplay() public void clearLine(int line) //end::method[] { + log.info("clearing line: "+line); lcdDisplay.clearLine(line); } + + /** + * Turns off LCD Display. Works the same as backlight off, but a write or clear command will turn the display back on. + */ + //tag::method[] + public void turnOff() + //end::method[] + { + log.info("turning off display"); + lcdDisplay.off(); + } + + /** + * Displays text at a specific line and position. + * @param text The text to display. + * @param line The line number. + * @param position The column number to start from. + */ + public void displayTextAtPos(String text, int line, int position) { + log.info("Displaying text at line {}, position {}: {}", line, position, text); + lcdDisplay.displayText(text, line, position); + } + } From b978c70079105313da30ef712c4a99e780f29f0c Mon Sep 17 00:00:00 2001 From: jyanev <74617990+jyanev@users.noreply.github.com> Date: Wed, 13 Mar 2024 23:27:52 -0500 Subject: [PATCH 8/8] outlined ultrasound sensor component (#185) * outlined ultrasound sensor component * Working ultra sonic sensor * added javadocs for ultra sonic sensor classes --------- Co-authored-by: ruthvikm Co-authored-by: Ruthvik Mannem <116761292+ruthvikm@users.noreply.github.com> --- .../UltraSonicSensorController.java | 57 +++++ components/src/main/resources/application.yml | 42 ++- .../src/docs/javadoc/allclasses-index.html | 4 + .../inputdevices/UltraSonicSensorHelper.html | 241 ++++++++++++++++++ .../inputdevices/UltrasoundSensorHelper.html | 195 ++++++++++++++ .../inputdevices/package-summary.html | 4 + .../inputdevices/package-tree.html | 1 + .../src/docs/javadoc/index-all.html | 28 ++ .../src/docs/javadoc/jquery-ui.overrides.css | 35 +++ .../src/docs/javadoc/member-search-index.js | 2 +- .../src/docs/javadoc/overview-tree.html | 1 + .../src/docs/javadoc/type-search-index.js | 2 +- .../inputdevices/PhotoResistorHelper.java | 2 +- .../inputdevices/UltraSonicSensorHelper.java | 135 ++++++++++ 14 files changed, 735 insertions(+), 14 deletions(-) create mode 100644 components/src/main/java/com/opensourcewithslu/components/controllers/UltraSonicSensorController.java create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/UltraSonicSensorHelper.html create mode 100644 pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/UltrasoundSensorHelper.html create mode 100644 pi4micronaut-utils/src/docs/javadoc/jquery-ui.overrides.css create mode 100644 pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/UltraSonicSensorHelper.java diff --git a/components/src/main/java/com/opensourcewithslu/components/controllers/UltraSonicSensorController.java b/components/src/main/java/com/opensourcewithslu/components/controllers/UltraSonicSensorController.java new file mode 100644 index 00000000..f0023096 --- /dev/null +++ b/components/src/main/java/com/opensourcewithslu/components/controllers/UltraSonicSensorController.java @@ -0,0 +1,57 @@ +package com.opensourcewithslu.components.controllers; + + +import com.opensourcewithslu.inputdevices.UltraSonicSensorHelper; +import com.pi4j.io.gpio.digital.DigitalInput; +import com.pi4j.io.gpio.digital.DigitalOutput; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Get; +import jakarta.inject.Named; + + +@Controller("/ultraSound") +public class UltraSonicSensorController { + + private final UltraSonicSensorHelper ultraSonicSensorHelper; + + public UltraSonicSensorController(@Named("ultra-sonic-trig") DigitalOutput trig, + @Named("ultra-sonic-echo") DigitalInput echo) { + this.ultraSonicSensorHelper = new UltraSonicSensorHelper(trig,echo); + + } + + + /** + * Enables the ultrasonic sensor + */ + @Get("/enable") + public String enableUltraSonicSensor() { + this.ultraSonicSensorHelper.startMeasuring(); + return "Ultra Sonic Sensor Enabled \nIf the distance is constantly Zero, make sure the sensor field of view is clear \n"; + } + + /** + * Returns distance from object in centimeters + */ + @Get("/distance/cm") + public String getDistanceInCentimeter() { + return this.ultraSonicSensorHelper.getDistanceInCentimeter() + " cm\n"; + } + + /** + * Returns distance from object in meters + */ + @Get("/distance/m") + public String getDistanceInMeter() { + return this.ultraSonicSensorHelper.getDistanceInMeters() + " m\n"; + } + + /** + * Disables ultrasonic sensor + */ + @Get("/disable") + public String disableUltrasoundSensor() { + this.ultraSonicSensorHelper.stopMeasuring(); + return "Ultra Sonic Sensor Disabled"; + } +} diff --git a/components/src/main/resources/application.yml b/components/src/main/resources/application.yml index 1f8f9992..59b97e31 100644 --- a/components/src/main/resources/application.yml +++ b/components/src/main/resources/application.yml @@ -1,6 +1,7 @@ .micronaut: application: name: components + pi4j: # tag::spi[] spi: @@ -10,8 +11,9 @@ pi4j: baud: 500000 # <4> reset-pin: 25 # <5> # end::spi[] + + # tag::pwm[] pwm: - # tag::pwm[] red-pwm: # <1> name: red # <2> address: 17 # <3> @@ -19,7 +21,6 @@ pi4j: provider: pigpio-pwm # <5> initial: 0 # <6> shutdown: 0 # <7> - # end::pwm[] blue-pwm: name: blue address: 18 @@ -48,22 +49,24 @@ pi4j: provider: pigpio-pwm initial: 0 shutdown: 0 + # end::pwm[] + + # tag::i2c[] i2c: - # tag::i2c[] lcd: # <1> name: lcd # <2> bus: 1 # <3> device: 0x27 # <4> - # end::i2c[] + # end::i2c[] + + # tag::digitalInput[] digital-input: - # tag::digitalInput[] photo-resistor-input: # <.> name: Photo Resistor Input # <.> address: 4 # <.> debounce: 100000 # <.> pull: PULL_DOWN # <.> provider: pigpio-digital-input # <.> - # end::digitalInput[] button-input-1: name: Push Button Input address: 16 @@ -106,16 +109,22 @@ pi4j: pull: PULL_DOWN debounce: 30000 provider: pigpio-digital-input - ### DIGITAL OUTPUTS + ultra-sonic-echo: + name: UltraSonic Sensor Input + address: 24 + pull: PULL_DOWN + debounce: 3000 + provider: pigpio-digital-input + # end::digitalInput[] + + # tag::digitalOutput[] digital-output: - # tag::digitalOutput[] led: # <1> name: LED Output # <2> address: 17 # <3> shutdown: LOW # <4> initial: LOW # <5> provider: pigpio-digital-output # <6> - # end::digitalOutput[] led2: name: LED Output address: 26 @@ -128,6 +137,14 @@ pi4j: shutdown: LOW initial: HIGH provider: pigpio-digital-output + ultra-sonic-trig: + name: UltraSonic Sensor Output + address: 23 + shutdown: LOW + initial: LOW + provider: pigpio-digital-output + # end::digitalOutput[] + # tag::multiInput[] multi-digital-input: # <.> rotary-encoder: # <.> @@ -138,7 +155,6 @@ pi4j: shutdown: LOW # <.> initial: HIGH # <.> provider: pigpio-digital-input # <.> - # end::multiInput[] rotary-encoder-2: name: Rotary Encoder 2 addresses: 12, 16, 20 @@ -147,6 +163,8 @@ pi4j: shutdown: LOW initial: HIGH provider: pigpio-digital-input + # end::multiInput[] + # tag::multipwm[] multi-pwm: rgb-led: # <.> @@ -156,7 +174,6 @@ pi4j: provider: pigpio-pwm # <.> initials: 0, 0, 0 # <.> shutdowns: 0, 0, 0 # <.> - # end::multipwm[] rgb-led-2: name: RGB LED 2 addresses: 18, 27, 22 @@ -164,6 +181,9 @@ pi4j: provider: pigpio-pwm initials: 0, 0, 0 shutdowns: 0, 0, 0 + # end::multipwm[] + + # clk: # name: CLK Output # address: 23 diff --git a/pi4micronaut-utils/src/docs/javadoc/allclasses-index.html b/pi4micronaut-utils/src/docs/javadoc/allclasses-index.html index 90788a39..fef0cb67 100644 --- a/pi4micronaut-utils/src/docs/javadoc/allclasses-index.html +++ b/pi4micronaut-utils/src/docs/javadoc/allclasses-index.html @@ -146,6 +146,10 @@

    All Classes and Interfaces<
    The TouchSwitchHelper class is used to initialize a touch switch.
    +
    +
    +
    The UltraSonicSensorHelper class initializes the Ultra Sonic Sensor and provides component functionality
    +
    diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/UltraSonicSensorHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/UltraSonicSensorHelper.html new file mode 100644 index 00000000..6ffb2de0 --- /dev/null +++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/UltraSonicSensorHelper.html @@ -0,0 +1,241 @@ + + + + +UltraSonicSensorHelper (pi4micronaut-utils v1.0 API) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class UltraSonicSensorHelper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.inputdevices.UltraSonicSensorHelper
    +
    +
    +
    +
    public class UltraSonicSensorHelper +extends Object
    +
    The UltraSonicSensorHelper class initializes the Ultra Sonic Sensor and provides component functionality
    +
    +
    +
      + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      UltraSonicSensorHelper(com.pi4j.io.gpio.digital.DigitalOutput triggerPin, + com.pi4j.io.gpio.digital.DigitalInput echoPin)
      +
      +
      Constructs a new UltraSonicSensorHelper instance.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      double
      + +
      +
      Returns the distance in centimeters.
      +
      +
      double
      + +
      +
      Returns the distance in meters.
      +
      +
      void
      + +
      +
      Initializes the Ultrasonic Sensor
      +
      +
      void
      + +
      +
      Begins measuring distance from sensor calling triggerAndMeasureDistance function every 100 milliseconds
      +
      +
      void
      + +
      +
      Shuts down ultrasonic sensor
      +
      +
      +
      +
      +
      +

      Methods inherited from class java.lang.Object

      +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        UltraSonicSensorHelper

        +
        public UltraSonicSensorHelper(com.pi4j.io.gpio.digital.DigitalOutput triggerPin, + com.pi4j.io.gpio.digital.DigitalInput echoPin)
        +
        Constructs a new UltraSonicSensorHelper instance.
        +
        +
        Parameters:
        +
        triggerPin - The DigitalOutput pin for triggering the ultrasonic sensor.
        +
        echoPin - The DigitalInput pin for receiving the echo from the ultrasonic sensor.
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        initialize

        +
        public void initialize()
        +
        Initializes the Ultrasonic Sensor
        +
        +
      • +
      • +
        +

        startMeasuring

        +
        public void startMeasuring()
        +
        Begins measuring distance from sensor calling triggerAndMeasureDistance function every 100 milliseconds
        +
        +
      • +
      • +
        +

        getDistanceInCentimeter

        +
        public double getDistanceInCentimeter()
        +
        Returns the distance in centimeters.
        +
        +
        Returns:
        +
        The distance value in centimeters.
        +
        +
        +
      • +
      • +
        +

        getDistanceInMeters

        +
        public double getDistanceInMeters()
        +
        Returns the distance in meters.
        +
        +
        Returns:
        +
        The distance value in meters.
        +
        +
        +
      • +
      • +
        +

        stopMeasuring

        +
        public void stopMeasuring()
        +
        Shuts down ultrasonic sensor
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/UltrasoundSensorHelper.html b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/UltrasoundSensorHelper.html new file mode 100644 index 00000000..55ac060e --- /dev/null +++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/UltrasoundSensorHelper.html @@ -0,0 +1,195 @@ + + + + +UltrasoundSensorHelper (pi4micronaut-utils v1.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class UltrasoundSensorHelper

    +
    +
    java.lang.Object +
    com.opensourcewithslu.inputdevices.UltrasoundSensorHelper
    +
    +
    +
    +
    public class UltrasoundSensorHelper +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        UltrasoundSensorHelper

        +
        public UltrasoundSensorHelper(com.pi4j.io.gpio.digital.DigitalOutput triggerPin, + com.pi4j.io.gpio.digital.DigitalInput echoPin)
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        initialize

        +
        public void initialize()
        +
        +
      • +
      • +
        +

        startMeasuring

        +
        public void startMeasuring()
        +
        +
      • +
      • +
        +

        getDistanceInCentimeter

        +
        public double getDistanceInCentimeter()
        +
        +
      • +
      • +
        +

        getDistanceInMeters

        +
        public double getDistanceInMeters()
        +
        +
      • +
      • +
        +

        stopMeasuring

        +
        public void stopMeasuring()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + 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 index 7d89f387..4e6c5bdc 100644 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-summary.html +++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-summary.html @@ -119,6 +119,10 @@

    Package com
    The TouchSwitchHelper class is used to initialize a touch switch.
    + +
    +
    The UltraSonicSensorHelper class initializes the Ultra Sonic Sensor and provides component functionality
    +
    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 index 3ff1e156..03eb87af 100644 --- a/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-tree.html +++ b/pi4micronaut-utils/src/docs/javadoc/com/opensourcewithslu/inputdevices/package-tree.html @@ -65,6 +65,7 @@

    Class Hierarchy

  • com.opensourcewithslu.inputdevices.RotaryEncoderHelper
  • com.opensourcewithslu.inputdevices.SlideSwitchHelper
  • com.opensourcewithslu.inputdevices.TouchSwitchHelper
  • +
  • com.opensourcewithslu.inputdevices.UltraSonicSensorHelper
  • diff --git a/pi4micronaut-utils/src/docs/javadoc/index-all.html b/pi4micronaut-utils/src/docs/javadoc/index-all.html index a1ce12df..7d061b48 100644 --- a/pi4micronaut-utils/src/docs/javadoc/index-all.html +++ b/pi4micronaut-utils/src/docs/javadoc/index-all.html @@ -234,6 +234,14 @@

    G

    Gets the device
    +
    getDistanceInCentimeter() - Method in class com.opensourcewithslu.inputdevices.UltraSonicSensorHelper
    +
    +
    Returns the distance in centimeters.
    +
    +
    getDistanceInMeters() - Method in class com.opensourcewithslu.inputdevices.UltraSonicSensorHelper
    +
    +
    Returns the distance in meters.
    +
    getEncoderValue() - Method in class com.opensourcewithslu.inputdevices.RotaryEncoderHelper
    Gets the value of the rotary encoder.
    @@ -401,6 +409,10 @@

    I

    Initializes the listener that keeps track of if the touch switch has been touched or not.
    +
    initialize() - Method in class com.opensourcewithslu.inputdevices.UltraSonicSensorHelper
    +
    +
    Initializes the Ultrasonic Sensor
    +
    intermittentTone() - Method in class com.opensourcewithslu.outputdevices.ActiveBuzzerHelper
    Intermittent tone will play a tone for a 20 seconds duration.
    @@ -849,6 +861,14 @@

    S

    The SpiConfiguration constructor.
    +
    startMeasuring() - Method in class com.opensourcewithslu.inputdevices.UltraSonicSensorHelper
    +
    +
    Begins measuring distance from sensor calling triggerAndMeasureDistance function every 100 milliseconds
    +
    +
    stopMeasuring() - Method in class com.opensourcewithslu.inputdevices.UltraSonicSensorHelper
    +
    +
    Shuts down ultrasonic sensor
    +
    switchState() - Method in class com.opensourcewithslu.outputdevices.LEDHelper
    Switches the state of the LED.
    @@ -871,6 +891,14 @@

    T

    |&eC@XU2v1XgbslY!TC>s&+9g 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 R7tgM!t7tzhRC@XD{{eD4av}f# literal 0 HcmV?d00001 diff --git a/pi4micronaut-utils/src/docs/asciidoc/img/Add_Configuration.png b/pi4micronaut-utils/src/docs/asciidoc/img/Add_Configuration.png new file mode 100644 index 0000000000000000000000000000000000000000..24a27d337a90329fdfc82b186c4e78010e2aaad5 GIT binary patch literal 127781 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

    U

    +
    UltraSonicSensorHelper - Class in com.opensourcewithslu.inputdevices
    +
    +
    The UltraSonicSensorHelper class initializes the Ultra Sonic Sensor and provides component functionality
    +
    +
    UltraSonicSensorHelper(DigitalOutput, DigitalInput) - Constructor for class com.opensourcewithslu.inputdevices.UltraSonicSensorHelper
    +
    +
    Constructs a new UltraSonicSensorHelper instance.
    +
    updateDark() - Method in class com.opensourcewithslu.inputdevices.PhotoResistorHelper
    Updates the darknessValue of the Photo Resistor.
    diff --git a/pi4micronaut-utils/src/docs/javadoc/jquery-ui.overrides.css b/pi4micronaut-utils/src/docs/javadoc/jquery-ui.overrides.css new file mode 100644 index 00000000..03c010ba --- /dev/null +++ b/pi4micronaut-utils/src/docs/javadoc/jquery-ui.overrides.css @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + /* Overrides the color of selection used in jQuery UI */ + background: #F8981D; + border: 1px solid #F8981D; +} diff --git a/pi4micronaut-utils/src/docs/javadoc/member-search-index.js b/pi4micronaut-utils/src/docs/javadoc/member-search-index.js index fc04e58d..fe903c9f 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.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 +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":"UltraSonicSensorHelper","l":"getDistanceInCentimeter()"},{"p":"com.opensourcewithslu.inputdevices","c":"UltraSonicSensorHelper","l":"getDistanceInMeters()"},{"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.inputdevices","c":"UltraSonicSensorHelper","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.inputdevices","c":"UltraSonicSensorHelper","l":"startMeasuring()"},{"p":"com.opensourcewithslu.inputdevices","c":"UltraSonicSensorHelper","l":"stopMeasuring()"},{"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":"UltraSonicSensorHelper","l":"UltraSonicSensorHelper(DigitalOutput, DigitalInput)","u":"%3Cinit%3E(com.pi4j.io.gpio.digital.DigitalOutput,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 ea2c936c..6ade6aaa 100644 --- a/pi4micronaut-utils/src/docs/javadoc/overview-tree.html +++ b/pi4micronaut-utils/src/docs/javadoc/overview-tree.html @@ -85,6 +85,7 @@

    Class Hierarchy

  • com.opensourcewithslu.inputdevices.SlideSwitchHelper
  • com.opensourcewithslu.utilities.SpiConfiguration
  • com.opensourcewithslu.inputdevices.TouchSwitchHelper
  • +
  • com.opensourcewithslu.inputdevices.UltraSonicSensorHelper
  • diff --git a/pi4micronaut-utils/src/docs/javadoc/type-search-index.js b/pi4micronaut-utils/src/docs/javadoc/type-search-index.js index b2436e8d..d2062864 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.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 +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"},{"p":"com.opensourcewithslu.inputdevices","l":"UltraSonicSensorHelper"}];updateSearchResults(); \ No newline at end of file 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 c9069487..88a16061 100644 --- a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/PhotoResistorHelper.java +++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/PhotoResistorHelper.java @@ -40,6 +40,7 @@ public PhotoResistorHelper(DigitalInput sensorInput, DigitalOutput sensorOutput) this.photoResistorInput = sensorInput; this.photoResistorOutput = sensorOutput; photoResistorOutput.high(); + sensorActive = true; this.isDark = photoResistorInput.isHigh(); } /** @@ -55,7 +56,6 @@ public int getDark() { */ public void initialize() { log.info("Photo Resistor Initialized"); - sensorActive = true; if (sensorActive) { ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1); executorService.scheduleAtFixedRate(this::updateDark, 0, 500, TimeUnit.MILLISECONDS); diff --git a/pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/UltraSonicSensorHelper.java b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/UltraSonicSensorHelper.java new file mode 100644 index 00000000..bc2d4a28 --- /dev/null +++ b/pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/UltraSonicSensorHelper.java @@ -0,0 +1,135 @@ +package com.opensourcewithslu.inputdevices; + +import com.pi4j.io.gpio.digital.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.util.concurrent.*; + +/** + * The UltraSonicSensorHelper class initializes the Ultra Sonic Sensor and provides component functionality + */ +public class UltraSonicSensorHelper { + + private static final Logger log = LoggerFactory.getLogger(UltraSonicSensorHelper.class); + private final DigitalOutput triggerPin; // This is the Trigger Pin - we send the pulse + private final DigitalInput echoPin; // This is the Echo Pin - we read the return signal + private volatile boolean sensorActive; + private volatile double distance; + private final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); + + /** + * Constructs a new UltraSonicSensorHelper instance. + * + * @param triggerPin The DigitalOutput pin for triggering the ultrasonic sensor. + * @param echoPin The DigitalInput pin for receiving the echo from the ultrasonic sensor. + */ + public UltraSonicSensorHelper(DigitalOutput triggerPin, DigitalInput echoPin) { + this.triggerPin = triggerPin; + this.echoPin = echoPin; + initialize(); + } + + /** + * Initializes the Ultrasonic Sensor + */ + public void initialize() { + log.info("Ultrasonic Sensor Initialized"); + sensorActive = true; + // TriggerPin is low initially + triggerPin.low(); + } + + /** + * Begins measuring distance from sensor calling triggerAndMeasureDistance function every 100 milliseconds + */ + public void startMeasuring() { + if (!sensorActive) { + return; + } + executorService.scheduleAtFixedRate(this::triggerAndMeasureDistance, 0, 100, TimeUnit.MILLISECONDS); + } + + /** + * Measures distance from ultrasonic sensor to a surface + */ + private void triggerAndMeasureDistance() { + try { + // Trigger pin is low for a short period before sending the pulse + triggerPin.low(); + TimeUnit.MICROSECONDS.sleep(2); + + // Sending a 10-microsecond pulse on the trigger pin + triggerPin.high(); + TimeUnit.MICROSECONDS.sleep(10); + triggerPin.low(); + + // Waiting for the echo pin to go high, signaling the start of the pulse return + long start = System.nanoTime(); + while (echoPin.isLow()) { + if ((System.nanoTime() - start) / 1000 > 20000) { // 20 ms timeout + log.debug("Timeout waiting for echo signal start"); + distance=0; + return; + } + } + long startTime = System.nanoTime(); + + // Waiting for the echo pin to go low, signaling the end of the pulse return + while (echoPin.isHigh()) { + if ((System.nanoTime() - startTime) / 1000 > 30000) { // 30 ms timeout + log.debug("Timeout waiting for echo signal end"); + distance = 0; + return; + } + } + long endTime = System.nanoTime(); + + // Calculate the distance + calculateDistance(endTime - startTime); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + log.error("Ultrasonic sensor measurement interrupted", e); + distance = 0; + } + } + + /** + * Calculates distance between sensor and surface + * @param durationInNano - time between sound wave leaving the sensor bouncing back; type: long + */ + private void calculateDistance(long durationInNano) { + // Converting nanoseconds to microseconds for distance calculation + double durationInMicroseconds = TimeUnit.NANOSECONDS.toMicros(durationInNano); + // Calculate distance in centimeters + distance = (durationInMicroseconds / 58.0); + log.info("Distance measured: {} cm", distance); + } + + /** + * Returns the distance in centimeters. + * + * @return The distance value in centimeters. + */ + public double getDistanceInCentimeter() { + return distance; + } + + /** + * Returns the distance in meters. + * + * @return The distance value in meters. + */ + public double getDistanceInMeters() { + return distance/100; + } + + /** + * Shuts down ultrasonic sensor + */ + public void stopMeasuring() { + sensorActive = false; + if (!executorService.isShutdown()) { + executorService.shutdownNow(); + } + } +}