Included javadocs with some broken links.

Javadocs are created on my PC, which cannot tie into the FTC API
to render the appropriate links. But this is enough to generate
docs to explain how to work with the code.
This commit is contained in:
Eric Ratliff
2026-02-04 08:39:04 -06:00
parent 840b901506
commit 91985564fd
35 changed files with 4626 additions and 9 deletions

View File

@@ -0,0 +1,78 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) -->
<title>All Classes and Interfaces (FtcRobotController API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="class index">
<meta name="generator" content="javadoc/AllClassesIndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="all-classes-index-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">Package</a></li>
<li>Class</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html#all-classes">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="All Classes and Interfaces" class="title">All Classes and Interfaces</h1>
</div>
<div id="all-classes-table">
<div class="caption"><span>Classes</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Main entry point for chute control system.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Simple chute controller with homing and position control.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Simple mock motor.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Simple mock potentiometer with configurable wraparound.</div>
</div>
</div>
</div>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,62 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) -->
<title>All Packages (FtcRobotController API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="package index">
<meta name="generator" content="javadoc/AllPackagesIndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="all-packages-index-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">Package</a></li>
<li>Class</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html#all-packages">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="All&amp;nbsp;Packages" class="title">All&nbsp;Packages</h1>
</div>
<div class="caption"><span>Package Summary</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">org.firstinspires.ftc.teamcode.subsystems.chute</a></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</main>
</div>
</div>
</body>
</html>

33
docs/copy.svg Normal file
View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation. Oracle designates this
particular file as subject to the "Classpath" exception as provided
by Oracle in the LICENSE file that accompanied this code.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).
You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.
-->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 380 460" fill="#505050">
<path
d="M 346,8 H 108 C 90,8 75,23 75,41 v 316 c 0,18 15,33 33,33 h 238 c 18,0 33,-15 33,-33 V 41 C 379,23 364,8 346,8 Z m -8,344 H 116 c -2,0 -3,-1 -3,-3 V 49 c 0,-2 1,-3 3,-3 h 222 c 2,0 3,1 3,3 v 300 h 10e-4 c 0,2 -1,3 -3,3 z"/>
<path
d="m 290,389 v 26 h 10e-4 c 0,2 -1,3 -3,3 H 49 c -2,0 -3,-1 -3,-3 V 99 c 0,-2 1,-3 3,-3 h 27 v 0 l -5e-4,-38 H 41 C 23,58 8,73 8,91 v 332 c 10e-4,18 15,33 33,33 h 254 c 18,0 33,-15 33,-33 v -34"/>
</svg>

1
docs/element-list Normal file
View File

@@ -0,0 +1 @@
org.firstinspires.ftc.teamcode.subsystems.chute

176
docs/help-doc.html Normal file
View File

@@ -0,0 +1,176 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) -->
<title>API Help (FtcRobotController API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="help">
<meta name="generator" content="javadoc/HelpWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="help-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">Package</a></li>
<li>Class</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="index-all.html">Index</a></li>
<li class="nav-bar-cell1-rev">Help</li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Help:</p>
<ul>
<li><a href="#help-navigation">Navigation</a></li>
<li><a href="#help-pages">Pages</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Help:&nbsp;</li>
<li><a href="#help-navigation">Navigation</a>&nbsp;|&nbsp;</li>
<li><a href="#help-pages">Pages</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<h1 class="title">JavaDoc Help</h1>
<ul class="help-toc">
<li><a href="#help-navigation">Navigation</a>:
<ul class="help-subtoc">
<li><a href="#search">Search</a></li>
</ul>
</li>
<li><a href="#help-pages">Kinds of Pages</a>:
<ul class="help-subtoc">
<li><a href="#package">Package</a></li>
<li><a href="#class">Class or Interface</a></li>
<li><a href="#doc-file">Other Files</a></li>
<li><a href="#tree">Tree (Class Hierarchy)</a></li>
<li><a href="#all-packages">All Packages</a></li>
<li><a href="#all-classes">All Classes and Interfaces</a></li>
<li><a href="#index">Index</a></li>
</ul>
</li>
</ul>
<hr>
<div class="sub-title">
<h2 id="help-navigation">Navigation</h2>
Starting from the <a href="index.html">Overview</a> page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The <a href="index-all.html">Index</a> and Search box allow you to navigate to specific declarations and summary pages, including: <a href="allpackages-index.html">All Packages</a>, <a href="allclasses-index.html">All Classes and Interfaces</a>
<section class="help-section" id="search">
<h3>Search</h3>
<p>You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API. These items can be searched using part or all of the name, optionally using "camelCase" abbreviations, or multiple search terms separated by whitespace. Some examples:</p>
<ul class="help-section-list">
<li><code>"j.l.obj"</code> matches "java.lang.Object"</li>
<li><code>"InpStr"</code> matches "java.io.InputStream"</li>
<li><code>"math exact long"</code> matches "java.lang.Math.absExact(long)"</li>
</ul>
<p>Refer to the <a href="https://docs.oracle.com/en/java/javase/21/docs/specs/javadoc/javadoc-search-spec.html">Javadoc Search Specification</a> for a full description of search features.</p>
</section>
</div>
<hr>
<div class="sub-title">
<h2 id="help-pages">Kinds of Pages</h2>
The following sections describe the different kinds of pages in this collection.
<section class="help-section" id="package">
<h3>Package</h3>
<p>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:</p>
<ul class="help-section-list">
<li>Interfaces</li>
<li>Classes</li>
<li>Enum Classes</li>
<li>Exception Classes</li>
<li>Annotation Interfaces</li>
</ul>
</section>
<section class="help-section" id="class">
<h3>Class or Interface</h3>
<p>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.</p>
<ul class="help-section-list">
<li>Class Inheritance Diagram</li>
<li>Direct Subclasses</li>
<li>All Known Subinterfaces</li>
<li>All Known Implementing Classes</li>
<li>Class or Interface Declaration</li>
<li>Class or Interface Description</li>
</ul>
<br>
<ul class="help-section-list">
<li>Nested Class Summary</li>
<li>Enum Constant Summary</li>
<li>Field Summary</li>
<li>Property Summary</li>
<li>Constructor Summary</li>
<li>Method Summary</li>
<li>Required Element Summary</li>
<li>Optional Element Summary</li>
</ul>
<br>
<ul class="help-section-list">
<li>Enum Constant Details</li>
<li>Field Details</li>
<li>Property Details</li>
<li>Constructor Details</li>
<li>Method Details</li>
<li>Element Details</li>
</ul>
<p><span class="help-note">Note:</span> 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.</p>
<p>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.</p>
</section>
<section class="help-section" id="doc-file">
<h3>Other Files</h3>
<p>Packages and modules may contain pages with additional information related to the declarations nearby.</p>
</section>
<section class="help-section" id="tree">
<h3>Tree (Class Hierarchy)</h3>
<p>There is a <a href="overview-tree.html">Class Hierarchy</a> 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 <code>java.lang.Object</code>. Interfaces do not inherit from <code>java.lang.Object</code>.</p>
<ul class="help-section-list">
<li>When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.</li>
<li>When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.</li>
</ul>
</section>
<section class="help-section" id="all-packages">
<h3>All Packages</h3>
<p>The <a href="allpackages-index.html">All Packages</a> page contains an alphabetic index of all packages contained in the documentation.</p>
</section>
<section class="help-section" id="all-classes">
<h3>All Classes and Interfaces</h3>
<p>The <a href="allclasses-index.html">All Classes and Interfaces</a> page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.</p>
</section>
<section class="help-section" id="index">
<h3>Index</h3>
<p>The <a href="index-all.html">Index</a> contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as <a href="allpackages-index.html">All Packages</a>, <a href="allclasses-index.html">All Classes and Interfaces</a>.</p>
</section>
</div>
<hr>
<span class="help-footnote">This help file applies to API documentation generated by the standard doclet.</span></main>
</div>
</div>
</body>
</html>

230
docs/index-all.html Normal file
View File

@@ -0,0 +1,230 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) -->
<title>Index (FtcRobotController API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="index">
<meta name="generator" content="javadoc/IndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">Package</a></li>
<li>Class</li>
<li><a href="overview-tree.html">Tree</a></li>
<li class="nav-bar-cell1-rev">Index</li>
<li><a href="help-doc.html#index">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>Index</h1>
</div>
<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:U">U</a>&nbsp;<br><a href="allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="allpackages-index.html">All&nbsp;Packages</a>
<h2 class="title" id="I:B">B</h2>
<dl class="index">
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#basic-usage-testing--heading" class="search-tag-link">Basic Usage (Testing)</a> - Search tag in class org.firstinspires.ftc.teamcode.subsystems.chute.Chute</dt>
<dd>Section</dd>
</dl>
<h2 class="title" id="I:C">C</h2>
<dl class="index">
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" class="type-name-link" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a> - Class in <a href="org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">org.firstinspires.ftc.teamcode.subsystems.chute</a></dt>
<dd>
<div class="block">Main entry point for chute control system.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#%3Cinit%3E(double)" class="member-name-link">Chute(double)</a> - Constructor for class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></dt>
<dd>
<div class="block">Creates chute with mock hardware for testing.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#%3Cinit%3E(double,double)" class="member-name-link">Chute(double, double)</a> - Constructor for class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></dt>
<dd>
<div class="block">Creates chute with mock hardware and custom pot wraparound.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#%3Cinit%3E(org.firstinspires.ftc.teamcode.subsystems.chute.ChuteController,org.firstinspires.ftc.teamcode.subsystems.chute.MockMotor,org.firstinspires.ftc.teamcode.subsystems.chute.MockPotentiometer)" class="member-name-link">Chute(ChuteController, MockMotor, MockPotentiometer)</a> - Constructor for class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></dt>
<dd>
<div class="block">Creates chute with real FTC hardware adapters.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html" class="type-name-link" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a> - Class in <a href="org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">org.firstinspires.ftc.teamcode.subsystems.chute</a></dt>
<dd>
<div class="block">Simple chute controller with homing and position control.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html#%3Cinit%3E(org.firstinspires.ftc.teamcode.subsystems.chute.MockMotor,org.firstinspires.ftc.teamcode.subsystems.chute.MockPotentiometer,double)" class="member-name-link">ChuteController(MockMotor, MockPotentiometer, double)</a> - Constructor for class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></dt>
<dd>
<div class="block">Create a new chute controller.</div>
</dd>
</dl>
<h2 class="title" id="I:F">F</h2>
<dl class="index">
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#features-heading" class="search-tag-link">Features</a> - Search tag in class org.firstinspires.ftc.teamcode.subsystems.chute.Chute</dt>
<dd>Section</dd>
</dl>
<h2 class="title" id="I:G">G</h2>
<dl class="index">
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html#getHomeVoltage()" class="member-name-link">getHomeVoltage()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></dt>
<dd>
<div class="block">Get the home voltage reference captured during homing.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#getMotor()" class="member-name-link">getMotor()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></dt>
<dd>
<div class="block">Gets motor instance for testing.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#getPosition()" class="member-name-link">getPosition()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></dt>
<dd>
<div class="block">Gets current position of chute.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html#getPosition()" class="member-name-link">getPosition()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></dt>
<dd>
<div class="block">Get current position of chute.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html#getPosition()" class="member-name-link">getPosition()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a></dt>
<dd>&nbsp;</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#getPot()" class="member-name-link">getPot()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></dt>
<dd>
<div class="block">Gets potentiometer instance for testing.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html#getPower()" class="member-name-link">getPower()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a></dt>
<dd>&nbsp;</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html#getVoltage()" class="member-name-link">getVoltage()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a></dt>
<dd>&nbsp;</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html#getWrapAmount()" class="member-name-link">getWrapAmount()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></dt>
<dd>
<div class="block">Get the pot wraparound amount.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html#getWrapAmount()" class="member-name-link">getWrapAmount()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a></dt>
<dd>&nbsp;</dd>
</dl>
<h2 class="title" id="I:H">H</h2>
<dl class="index">
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#home()" class="member-name-link">home()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></dt>
<dd>
<div class="block">Starts homing sequence.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html#home()" class="member-name-link">home()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></dt>
<dd>
<div class="block">Start homing sequence - drives down until pot stops changing, then captures reference voltage.</div>
</dd>
</dl>
<h2 class="title" id="I:I">I</h2>
<dl class="index">
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#isAtTarget()" class="member-name-link">isAtTarget()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></dt>
<dd>
<div class="block">Checks if chute is homed and stationary at target position.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#isHomed()" class="member-name-link">isHomed()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></dt>
<dd>
<div class="block">Checks if chute has completed homing sequence.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html#isHomed()" class="member-name-link">isHomed()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></dt>
<dd>
<div class="block">Check if chute has been homed.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#isMoving()" class="member-name-link">isMoving()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></dt>
<dd>
<div class="block">Checks if chute is currently moving to target.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html#isMoving()" class="member-name-link">isMoving()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></dt>
<dd>
<div class="block">Check if chute is currently moving to target.</div>
</dd>
</dl>
<h2 class="title" id="I:M">M</h2>
<dl class="index">
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html" class="type-name-link" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a> - Class in <a href="org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">org.firstinspires.ftc.teamcode.subsystems.chute</a></dt>
<dd>
<div class="block">Simple mock motor.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html#%3Cinit%3E()" class="member-name-link">MockMotor()</a> - Constructor for class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a></dt>
<dd>&nbsp;</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html" class="type-name-link" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a> - Class in <a href="org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">org.firstinspires.ftc.teamcode.subsystems.chute</a></dt>
<dd>
<div class="block">Simple mock potentiometer with configurable wraparound.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html#%3Cinit%3E()" class="member-name-link">MockPotentiometer()</a> - Constructor for class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a></dt>
<dd>
<div class="block">Create potentiometer with default 2pi wraparound.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html#%3Cinit%3E(double)" class="member-name-link">MockPotentiometer(double)</a> - Constructor for class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a></dt>
<dd>
<div class="block">Create potentiometer with custom wraparound amount.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html#moveToPosition(double)" class="member-name-link">moveToPosition(double)</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></dt>
<dd>
<div class="block">Move to target position.</div>
</dd>
</dl>
<h2 class="title" id="I:O">O</h2>
<dl class="index">
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">org.firstinspires.ftc.teamcode.subsystems.chute</a> - package org.firstinspires.ftc.teamcode.subsystems.chute</dt>
<dd>&nbsp;</dd>
</dl>
<h2 class="title" id="I:S">S</h2>
<dl class="index">
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html#setPosition(double)" class="member-name-link">setPosition(double)</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a></dt>
<dd>&nbsp;</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html#setPosition(double)" class="member-name-link">setPosition(double)</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a></dt>
<dd>&nbsp;</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html#setPower(double)" class="member-name-link">setPower(double)</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a></dt>
<dd>&nbsp;</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#setTargetPosition(double)" class="member-name-link">setTargetPosition(double)</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></dt>
<dd>
<div class="block">Commands chute to move to target position.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#stop()" class="member-name-link">stop()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></dt>
<dd>
<div class="block">Emergency stop - immediately halts motor and cancels any movement.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html#stop()" class="member-name-link">stop()</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></dt>
<dd>
<div class="block">Emergency stop - immediately stops motor and cancels movement.</div>
</dd>
</dl>
<h2 class="title" id="I:U">U</h2>
<dl class="index">
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#update(double)" class="member-name-link">update(double)</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></dt>
<dd>
<div class="block">Updates chute state - must be called every loop iteration.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html#update(double)" class="member-name-link">update(double)</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></dt>
<dd>
<div class="block">Update controller state - call this every loop iteration.</div>
</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html#update(double)" class="member-name-link">update(double)</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a></dt>
<dd>&nbsp;</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html#updatePosition(double)" class="member-name-link">updatePosition(double)</a> - Method in class org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a></dt>
<dd>&nbsp;</dd>
<dt><a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#usage-with-real-hardware-heading" class="search-tag-link">Usage with Real Hardware</a> - Search tag in class org.firstinspires.ftc.teamcode.subsystems.chute.Chute</dt>
<dd>Section</dd>
</dl>
<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:U">U</a>&nbsp;<br><a href="allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="allpackages-index.html">All&nbsp;Packages</a></main>
</div>
</div>
</body>
</html>

25
docs/index.html Normal file
View File

@@ -0,0 +1,25 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) -->
<title>FtcRobotController API</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="index redirect">
<meta name="generator" content="javadoc/IndexRedirectWriter">
<link rel="canonical" href="org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript">window.location.replace('org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html')</script>
<noscript>
<meta http-equiv="Refresh" content="0;org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">
</noscript>
</head>
<body class="index-redirect-page">
<main role="main">
<noscript>
<p>JavaScript is disabled on your browser.</p>
</noscript>
<p><a href="org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html</a></p>
</main>
</body>
</html>

View File

@@ -0,0 +1,27 @@
OPENJDK ASSEMBLY EXCEPTION
The OpenJDK source code made available by Oracle America, Inc. (Oracle) at
openjdk.org ("OpenJDK Code") is distributed under the terms of the GNU
General Public License <https://www.gnu.org/copyleft/gpl.html> version 2
only ("GPL2"), with the following clarification and special exception.
Linking this OpenJDK Code statically or dynamically with other code
is making a combined work based on this library. Thus, the terms
and conditions of GPL2 cover the whole combination.
As a special exception, Oracle gives you permission to link this
OpenJDK Code with certain code licensed by Oracle as indicated at
https://openjdk.org/legal/exception-modules-2007-05-08.html
("Designated Exception Modules") to produce an executable,
regardless of the license terms of the Designated Exception Modules,
and to copy and distribute the resulting executable under GPL2,
provided that the Designated Exception Modules continue to be
governed by the licenses under which they were offered by Oracle.
As such, it allows licensees and sublicensees of Oracle's GPL2 OpenJDK Code
to build an executable that includes those portions of necessary code that
Oracle could not provide under GPL2 (or that Oracle has provided under GPL2
with the Classpath exception). If you modify or add to the OpenJDK code,
that new GPL2 code may still be combined with Designated Exception Modules
if the new code is made subject to this exception by its copyright holder.

26
docs/legal/jquery.md Normal file
View File

@@ -0,0 +1,26 @@
## jQuery v3.7.1
### jQuery License
```
jQuery v 3.7.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.
```

49
docs/legal/jqueryUI.md Normal file
View File

@@ -0,0 +1,49 @@
## jQuery UI v1.14.1
### jQuery UI License
```
Copyright OpenJS Foundation and other contributors, https://openjsf.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.
```

31
docs/link.svg Normal file
View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation. Oracle designates this
particular file as subject to the "Classpath" exception as provided
by Oracle in the LICENSE file that accompanied this code.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).
You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.
-->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="#505050">
<path d="M32 239.3c18.2 16.7 57.1 15.4 74.5-1.7l30.9-32c8.3-8.8 4.8-15.1.7-19.9-4.7-3-12-8.1-20.4.5l-29.4 29.6a29.4 29.4 0 0 1-39.4.9l-8-7c-8.8-9.4-11-28.3-.8-38.8l49.8-51.3c7.2-6.6 21.3-10 36.1-2.4 6.9 5.4 15.6 15.7 26 6.2 9.9-11.2 2.9-20.4-10-29.3-18.7-12.6-52-14.8-70.4 3.8L17 154.2c-20 20.2-11.3 58 1.7 71.5a69 69 0 0 0 13.2 13.6z"/>
<path d="M223.2 17.5c-18.4-16.6-57.3-15.3-74.6 2l-30.8 31.9c-8.3 9-4.8 15.2-.7 20 4.8 3 12.1 8 20.5-.6 4.8-5 29.3-29.6 29.3-29.6a29.4 29.4 0 0 1 39.4-1l8 6.8c8.8 9.5 11 28.3.9 38.9l-49.6 51.4c-7.2 6.7-21.3 10.1-36.1 2.6-7-5.4-15.7-15.7-26.1-6.2-9.8 11.2-2.8 20.4 10.2 29.3 18.7 12.5 52 14.7 70.3-4l54.4-56.5c20-20.3 11.2-58-1.9-71.5a69 69 0 0 0-13.2-13.5Z"/>
</svg>

View File

@@ -0,0 +1 @@
memberSearchIndex = [{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"Chute","l":"Chute(ChuteController, MockMotor, MockPotentiometer)","u":"%3Cinit%3E(org.firstinspires.ftc.teamcode.subsystems.chute.ChuteController,org.firstinspires.ftc.teamcode.subsystems.chute.MockMotor,org.firstinspires.ftc.teamcode.subsystems.chute.MockPotentiometer)"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"Chute","l":"Chute(double)","u":"%3Cinit%3E(double)"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"Chute","l":"Chute(double, double)","u":"%3Cinit%3E(double,double)"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"ChuteController","l":"ChuteController(MockMotor, MockPotentiometer, double)","u":"%3Cinit%3E(org.firstinspires.ftc.teamcode.subsystems.chute.MockMotor,org.firstinspires.ftc.teamcode.subsystems.chute.MockPotentiometer,double)"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"ChuteController","l":"getHomeVoltage()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"Chute","l":"getMotor()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"Chute","l":"getPosition()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"ChuteController","l":"getPosition()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"MockMotor","l":"getPosition()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"Chute","l":"getPot()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"MockMotor","l":"getPower()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"MockPotentiometer","l":"getVoltage()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"ChuteController","l":"getWrapAmount()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"MockPotentiometer","l":"getWrapAmount()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"Chute","l":"home()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"ChuteController","l":"home()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"Chute","l":"isAtTarget()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"Chute","l":"isHomed()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"ChuteController","l":"isHomed()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"Chute","l":"isMoving()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"ChuteController","l":"isMoving()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"MockMotor","l":"MockMotor()","u":"%3Cinit%3E()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"MockPotentiometer","l":"MockPotentiometer()","u":"%3Cinit%3E()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"MockPotentiometer","l":"MockPotentiometer(double)","u":"%3Cinit%3E(double)"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"ChuteController","l":"moveToPosition(double)"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"MockMotor","l":"setPosition(double)"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"MockPotentiometer","l":"setPosition(double)"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"MockMotor","l":"setPower(double)"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"Chute","l":"setTargetPosition(double)"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"Chute","l":"stop()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"ChuteController","l":"stop()"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"Chute","l":"update(double)"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"ChuteController","l":"update(double)"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"MockMotor","l":"update(double)"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","c":"MockPotentiometer","l":"updatePosition(double)"}];updateSearchResults();

View File

@@ -0,0 +1 @@
moduleSearchIndex = [];updateSearchResults();

View File

@@ -0,0 +1,433 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) -->
<title>Chute (FtcRobotController API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: package: org.firstinspires.ftc.teamcode.subsystems.chute, class: Chute">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.firstinspires.ftc.teamcode.subsystems.chute</a></div>
<h1 title="Class Chute" class="title">Class Chute</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">org.firstinspires.ftc.teamcode.subsystems.chute.Chute</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Chute</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Main entry point for chute control system.
<p>Provides high-level interface for controlling a linear actuator (chute) using
a motor and potentiometer. Automatically handles homing, position tracking across
potentiometer wraparound, and movement to target positions.
<h2 id="basic-usage-testing--heading">Basic Usage (Testing)</h2>
<pre>
Chute chute = new Chute(4 * Math.PI); // 4 radians max extension
// In your loop
chute.update(0.02); // 50Hz update
chute.setTargetPosition(2.0); // Move to 2 radians
if (chute.isAtTarget()) {
// Ready!
}
</pre>
<h2 id="usage-with-real-hardware-heading">Usage with Real Hardware</h2>
<pre>
FtcMotor motor = new FtcMotor(hardwareMap.get(DcMotor.class, "chute_motor"));
FtcPotentiometer pot = new FtcPotentiometer(hardwareMap.get(AnalogInput.class, "chute_pot"));
ChuteController controller = new ChuteController(motor, pot, 4 * Math.PI);
Chute chute = new Chute(controller, motor, pot);
</pre>
<h2 id="features-heading">Features</h2>
<ul>
<li>Automatic homing - captures reference voltage at mechanical home position</li>
<li>Position unwrapping - tracks absolute position across pot wraparound</li>
<li>Configurable wraparound - supports different pot ranges (default 2pi)</li>
<li>Auto-homing - automatically homes before first movement if needed</li>
<li>Safety limits - enforces maximum extension</li>
</ul></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute"><code>ChuteController</code></a></li>
<li><a href="MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute"><code>MockPotentiometer</code></a></li>
<li>
<details class="invalid-tag">
<summary>invalid reference</summary>
<pre><code>FtcPotentiometer</code></pre>
</details>
</li>
</ul>
</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(double)" class="member-name-link">Chute</a><wbr>(double&nbsp;maxExtension)</code></div>
<div class="col-last even-row-color">
<div class="block">Creates chute with mock hardware for testing.</div>
</div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(double,double)" class="member-name-link">Chute</a><wbr>(double&nbsp;maxExtension,
double&nbsp;wrapAmount)</code></div>
<div class="col-last odd-row-color">
<div class="block">Creates chute with mock hardware and custom pot wraparound.</div>
</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.firstinspires.ftc.teamcode.subsystems.chute.ChuteController,org.firstinspires.ftc.teamcode.subsystems.chute.MockMotor,org.firstinspires.ftc.teamcode.subsystems.chute.MockPotentiometer)" class="member-name-link">Chute</a><wbr>(<a href="ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a>&nbsp;controller,
<a href="MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a>&nbsp;motor,
<a href="MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a>&nbsp;pot)</code></div>
<div class="col-last even-row-color">
<div class="block">Creates chute with real FTC hardware adapters.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMotor()" class="member-name-link">getMotor</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Gets motor instance for testing.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>double</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPosition()" class="member-name-link">getPosition</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Gets current position of chute.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPot()" class="member-name-link">getPot</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Gets potentiometer instance for testing.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#home()" class="member-name-link">home</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Starts homing sequence.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isAtTarget()" class="member-name-link">isAtTarget</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Checks if chute is homed and stationary at target position.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isHomed()" class="member-name-link">isHomed</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Checks if chute has completed homing sequence.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isMoving()" class="member-name-link">isMoving</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Checks if chute is currently moving to target.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setTargetPosition(double)" class="member-name-link">setTargetPosition</a><wbr>(double&nbsp;position)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Commands chute to move to target position.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#stop()" class="member-name-link">stop</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Emergency stop - immediately halts motor and cancels any movement.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#update(double)" class="member-name-link">update</a><wbr>(double&nbsp;dt)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Updates chute state - must be called every loop iteration.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(double)">
<h3>Chute</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Chute</span><wbr><span class="parameters">(double&nbsp;maxExtension)</span></div>
<div class="block">Creates chute with mock hardware for testing.
Uses default 2pi (full rotation) potentiometer wraparound.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>maxExtension</code> - Maximum extension from home position in radians</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(double,double)">
<h3>Chute</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Chute</span><wbr><span class="parameters">(double&nbsp;maxExtension,
double&nbsp;wrapAmount)</span></div>
<div class="block">Creates chute with mock hardware and custom pot wraparound.
Use this constructor when testing with non-standard potentiometer ranges.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>maxExtension</code> - Maximum extension from home position in radians</dd>
<dd><code>wrapAmount</code> - Potentiometer wraparound amount in radians (e.g., pi, 2pi, 4pi)</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.firstinspires.ftc.teamcode.subsystems.chute.ChuteController,org.firstinspires.ftc.teamcode.subsystems.chute.MockMotor,org.firstinspires.ftc.teamcode.subsystems.chute.MockPotentiometer)">
<h3>Chute</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Chute</span><wbr><span class="parameters">(<a href="ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a>&nbsp;controller,
<a href="MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a>&nbsp;motor,
<a href="MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a>&nbsp;pot)</span></div>
<div class="block">Creates chute with real FTC hardware adapters.
Use this constructor in actual FTC OpModes with hardware from hardwareMap.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>controller</code> - Pre-configured controller with real hardware</dd>
<dd><code>motor</code> - FtcMotor adapter wrapping DcMotor</dd>
<dd><code>pot</code> - FtcPotentiometer adapter wrapping AnalogInput</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li>
<details class="invalid-tag">
<summary>invalid reference</summary>
<pre><code>FtcMotor</code></pre>
</details>
</li>
<li>
<details class="invalid-tag">
<summary>invalid reference</summary>
<pre><code>FtcPotentiometer</code></pre>
</details>
</li>
</ul>
</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="update(double)">
<h3>update</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">update</span><wbr><span class="parameters">(double&nbsp;dt)</span></div>
<div class="block">Updates chute state - must be called every loop iteration.
Handles motor movement, pot reading, homing, and position control.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>dt</code> - Time since last update in seconds (typically 0.02 for 50Hz)</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="home()">
<h3>home</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">home</span>()</div>
<div class="block">Starts homing sequence.
Drives chute down until pot stops changing, then captures home voltage.
Typically not needed as setTargetPosition() auto-homes if required.</div>
</section>
</li>
<li>
<section class="detail" id="setTargetPosition(double)">
<h3>setTargetPosition</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setTargetPosition</span><wbr><span class="parameters">(double&nbsp;position)</span></div>
<div class="block">Commands chute to move to target position.
Automatically initiates homing if not already homed.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>position</code> - Target position in radians from home (clamped to [0, maxExtension])</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="stop()">
<h3>stop</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">stop</span>()</div>
<div class="block">Emergency stop - immediately halts motor and cancels any movement.</div>
</section>
</li>
<li>
<section class="detail" id="getPosition()">
<h3>getPosition</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getPosition</span>()</div>
<div class="block">Gets current position of chute.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>Current position in radians from home (0.0 at home position)</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isHomed()">
<h3>isHomed</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isHomed</span>()</div>
<div class="block">Checks if chute has completed homing sequence.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>true if homed and ready for position commands</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isMoving()">
<h3>isMoving</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isMoving</span>()</div>
<div class="block">Checks if chute is currently moving to target.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>true if actively moving</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isAtTarget()">
<h3>isAtTarget</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isAtTarget</span>()</div>
<div class="block">Checks if chute is homed and stationary at target position.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>true if homed and not moving (ready for next command)</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getMotor()">
<h3>getMotor</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a></span>&nbsp;<span class="element-name">getMotor</span>()</div>
<div class="block">Gets motor instance for testing.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>MockMotor instance used by this chute</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getPot()">
<h3>getPot</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a></span>&nbsp;<span class="element-name">getPot</span>()</div>
<div class="block">Gets potentiometer instance for testing.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>MockPotentiometer instance used by this chute</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,311 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) -->
<title>ChuteController (FtcRobotController API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: package: org.firstinspires.ftc.teamcode.subsystems.chute, class: ChuteController">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.firstinspires.ftc.teamcode.subsystems.chute</a></div>
<h1 title="Class ChuteController" class="title">Class ChuteController</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">org.firstinspires.ftc.teamcode.subsystems.chute.ChuteController</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ChuteController</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Simple chute controller with homing and position control.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.firstinspires.ftc.teamcode.subsystems.chute.MockMotor,org.firstinspires.ftc.teamcode.subsystems.chute.MockPotentiometer,double)" class="member-name-link">ChuteController</a><wbr>(<a href="MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a>&nbsp;motor,
<a href="MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a>&nbsp;pot,
double&nbsp;maxExtension)</code></div>
<div class="col-last even-row-color">
<div class="block">Create a new chute controller.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>double</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getHomeVoltage()" class="member-name-link">getHomeVoltage</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Get the home voltage reference captured during homing.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>double</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPosition()" class="member-name-link">getPosition</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Get current position of chute.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>double</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWrapAmount()" class="member-name-link">getWrapAmount</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Get the pot wraparound amount.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#home()" class="member-name-link">home</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Start homing sequence - drives down until pot stops changing, then captures reference voltage.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isHomed()" class="member-name-link">isHomed</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Check if chute has been homed.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isMoving()" class="member-name-link">isMoving</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Check if chute is currently moving to target.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#moveToPosition(double)" class="member-name-link">moveToPosition</a><wbr>(double&nbsp;target)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Move to target position.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#stop()" class="member-name-link">stop</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Emergency stop - immediately stops motor and cancels movement.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#update(double)" class="member-name-link">update</a><wbr>(double&nbsp;dt)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Update controller state - call this every loop iteration.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(org.firstinspires.ftc.teamcode.subsystems.chute.MockMotor,org.firstinspires.ftc.teamcode.subsystems.chute.MockPotentiometer,double)">
<h3>ChuteController</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ChuteController</span><wbr><span class="parameters">(<a href="MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a>&nbsp;motor,
<a href="MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a>&nbsp;pot,
double&nbsp;maxExtension)</span></div>
<div class="block">Create a new chute controller.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>motor</code> - Motor that drives the chute</dd>
<dd><code>pot</code> - Potentiometer that measures position</dd>
<dd><code>maxExtension</code> - Maximum extension from home in radians</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="home()">
<h3>home</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">home</span>()</div>
<div class="block">Start homing sequence - drives down until pot stops changing, then captures reference voltage.</div>
</section>
</li>
<li>
<section class="detail" id="moveToPosition(double)">
<h3>moveToPosition</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">moveToPosition</span><wbr><span class="parameters">(double&nbsp;target)</span></div>
<div class="block">Move to target position. Automatically homes first if not already homed.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>target</code> - Target position in radians from home</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="update(double)">
<h3>update</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">update</span><wbr><span class="parameters">(double&nbsp;dt)</span></div>
<div class="block">Update controller state - call this every loop iteration.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>dt</code> - Time since last update in seconds</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isHomed()">
<h3>isHomed</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isHomed</span>()</div>
<div class="block">Check if chute has been homed.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>True if homing is complete</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isMoving()">
<h3>isMoving</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isMoving</span>()</div>
<div class="block">Check if chute is currently moving to target.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>True if moving</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getPosition()">
<h3>getPosition</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getPosition</span>()</div>
<div class="block">Get current position of chute.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>Position in radians from home</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getHomeVoltage()">
<h3>getHomeVoltage</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getHomeVoltage</span>()</div>
<div class="block">Get the home voltage reference captured during homing.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>Home voltage in range [0, wrapAmount]</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getWrapAmount()">
<h3>getWrapAmount</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getWrapAmount</span>()</div>
<div class="block">Get the pot wraparound amount.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>Wrap amount in radians</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="stop()">
<h3>stop</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">stop</span>()</div>
<div class="block">Emergency stop - immediately stops motor and cancels movement.</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,207 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) -->
<title>MockMotor (FtcRobotController API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: package: org.firstinspires.ftc.teamcode.subsystems.chute, class: MockMotor">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.firstinspires.ftc.teamcode.subsystems.chute</a></div>
<h1 title="Class MockMotor" class="title">Class MockMotor</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">org.firstinspires.ftc.teamcode.subsystems.chute.MockMotor</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">MockMotor</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Simple mock motor.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">MockMotor</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>double</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPosition()" class="member-name-link">getPosition</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>double</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPower()" class="member-name-link">getPower</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setPosition(double)" class="member-name-link">setPosition</a><wbr>(double&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setPower(double)" class="member-name-link">setPower</a><wbr>(double&nbsp;power)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#update(double)" class="member-name-link">update</a><wbr>(double&nbsp;dt)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>MockMotor</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">MockMotor</span>()</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="setPower(double)">
<h3>setPower</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setPower</span><wbr><span class="parameters">(double&nbsp;power)</span></div>
</section>
</li>
<li>
<section class="detail" id="getPower()">
<h3>getPower</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getPower</span>()</div>
</section>
</li>
<li>
<section class="detail" id="update(double)">
<h3>update</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">update</span><wbr><span class="parameters">(double&nbsp;dt)</span></div>
</section>
</li>
<li>
<section class="detail" id="getPosition()">
<h3>getPosition</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getPosition</span>()</div>
</section>
</li>
<li>
<section class="detail" id="setPosition(double)">
<h3>setPosition</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setPosition</span><wbr><span class="parameters">(double&nbsp;pos)</span></div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,216 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) -->
<title>MockPotentiometer (FtcRobotController API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: package: org.firstinspires.ftc.teamcode.subsystems.chute, class: MockPotentiometer">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.firstinspires.ftc.teamcode.subsystems.chute</a></div>
<h1 title="Class MockPotentiometer" class="title">Class MockPotentiometer</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">org.firstinspires.ftc.teamcode.subsystems.chute.MockPotentiometer</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">MockPotentiometer</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Simple mock potentiometer with configurable wraparound.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">MockPotentiometer</a>()</code></div>
<div class="col-last even-row-color">
<div class="block">Create potentiometer with default 2pi wraparound.</div>
</div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(double)" class="member-name-link">MockPotentiometer</a><wbr>(double&nbsp;wrapAmount)</code></div>
<div class="col-last odd-row-color">
<div class="block">Create potentiometer with custom wraparound amount.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>double</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getVoltage()" class="member-name-link">getVoltage</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>double</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWrapAmount()" class="member-name-link">getWrapAmount</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setPosition(double)" class="member-name-link">setPosition</a><wbr>(double&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#updatePosition(double)" class="member-name-link">updatePosition</a><wbr>(double&nbsp;delta)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>MockPotentiometer</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">MockPotentiometer</span>()</div>
<div class="block">Create potentiometer with default 2pi wraparound.</div>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(double)">
<h3>MockPotentiometer</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">MockPotentiometer</span><wbr><span class="parameters">(double&nbsp;wrapAmount)</span></div>
<div class="block">Create potentiometer with custom wraparound amount.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>wrapAmount</code> - Voltage at which pot wraps back to 0</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getVoltage()">
<h3>getVoltage</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getVoltage</span>()</div>
</section>
</li>
<li>
<section class="detail" id="setPosition(double)">
<h3>setPosition</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setPosition</span><wbr><span class="parameters">(double&nbsp;pos)</span></div>
</section>
</li>
<li>
<section class="detail" id="updatePosition(double)">
<h3>updatePosition</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">updatePosition</span><wbr><span class="parameters">(double&nbsp;delta)</span></div>
</section>
</li>
<li>
<section class="detail" id="getWrapAmount()">
<h3>getWrapAmount</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getWrapAmount</span>()</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,103 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) -->
<title>org.firstinspires.ftc.teamcode.subsystems.chute (FtcRobotController API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="declaration: package: org.firstinspires.ftc.teamcode.subsystems.chute">
<meta name="generator" content="javadoc/PackageWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li class="nav-bar-cell1-rev">Package</li>
<li>Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#package">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Package:</p>
<ul>
<li>Description</li>
<li>Related Packages</li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Package:&nbsp;</li>
<li>Description&nbsp;|&nbsp;</li>
<li>Related Packages&nbsp;|&nbsp;</li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Package org.firstinspires.ftc.teamcode.subsystems.chute" class="title">Package org.firstinspires.ftc.teamcode.subsystems.chute</h1>
</div>
<hr>
<div class="package-signature">package <span class="element-name">org.firstinspires.ftc.teamcode.subsystems.chute</span></div>
<section class="summary">
<ul class="summary-list">
<li>
<div id="class-summary">
<div class="caption"><span>Classes</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="Chute.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Main entry point for chute control system.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ChuteController.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Simple chute controller with homing and position control.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="MockMotor.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Simple mock motor.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="MockPotentiometer.html" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Simple mock potentiometer with configurable wraparound.</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,68 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) -->
<title>org.firstinspires.ftc.teamcode.subsystems.chute Class Hierarchy (FtcRobotController API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="tree: package: org.firstinspires.ftc.teamcode.subsystems.chute">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="package-summary.html">Package</a></li>
<li>Class</li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package org.firstinspires.ftc.teamcode.subsystems.chute</h1>
</div>
<section class="hierarchy">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">org.firstinspires.ftc.teamcode.subsystems.chute.<a href="Chute.html" class="type-name-link" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></li>
<li class="circle">org.firstinspires.ftc.teamcode.subsystems.chute.<a href="ChuteController.html" class="type-name-link" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></li>
<li class="circle">org.firstinspires.ftc.teamcode.subsystems.chute.<a href="MockMotor.html" class="type-name-link" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a></li>
<li class="circle">org.firstinspires.ftc.teamcode.subsystems.chute.<a href="MockPotentiometer.html" class="type-name-link" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a></li>
</ul>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

72
docs/overview-tree.html Normal file
View File

@@ -0,0 +1,72 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) -->
<title>Class Hierarchy (FtcRobotController API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="class tree">
<meta name="generator" content="javadoc/TreeWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="tree-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li>Package</li>
<li>Class</li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html#tree">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For All Packages</h1>
</div>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal contents-list">
<li><a href="org/firstinspires/ftc/teamcode/subsystems/chute/package-tree.html">org.firstinspires.ftc.teamcode.subsystems.chute</a></li>
</ul>
<section class="hierarchy">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html" class="type-name-link" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">Chute</a></li>
<li class="circle">org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.html" class="type-name-link" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">ChuteController</a></li>
<li class="circle">org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockMotor.html" class="type-name-link" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockMotor</a></li>
<li class="circle">org.firstinspires.ftc.teamcode.subsystems.chute.<a href="org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.html" class="type-name-link" title="class in org.firstinspires.ftc.teamcode.subsystems.chute">MockPotentiometer</a></li>
</ul>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1 @@
packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"org.firstinspires.ftc.teamcode.subsystems.chute"}];updateSearchResults();

BIN
docs/resources/glass.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 B

BIN
docs/resources/x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 B

2
docs/script-dir/jquery-3.7.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

6
docs/script-dir/jquery-ui.min.css vendored Normal file
View File

@@ -0,0 +1,6 @@
/*! jQuery UI - v1.14.1 - 2025-01-13
* https://jqueryui.com
* Includes: core.css, autocomplete.css, menu.css
* Copyright OpenJS Foundation and other contributors; Licensed MIT */
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}

6
docs/script-dir/jquery-ui.min.js vendored Normal file

File diff suppressed because one or more lines are too long

253
docs/script.js Normal file
View File

@@ -0,0 +1,253 @@
/*
* Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
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.getElementById(tableId + '.tabpanel')
.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);
}
});

284
docs/search-page.js Normal file
View File

@@ -0,0 +1,284 @@
/*
* Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
"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 = $("<div class='table-tabs'></div>").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 = $("<button id='result-tab-" + key
+ "' class='page-search-header'><span>" + categories[key] + "</span>"
+ "<span style='font-weight: normal'> (" + count + ")</span></button>").appendTo(tabContainer);
button.click(key, function(e) {
fixedTab = true;
renderResult(e.data, $(this));
});
visibleTabs.push(key);
} else {
$("<span class='page-search-header active-table-tab'>" + categories[key]
+ "<span style='font-weight: normal'> (" + count + ")</span></span>").appendTo(tabContainer);
renderTable(key, r[key]).appendTo(resultContainer);
tabContainer = $("<div class='table-tabs'></div>").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 = $("<div class='summary-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";
}
$("<div class='table-header col-plain'>" + col1 + "</div>").appendTo(table);
if (category !== "modules") {
$("<div class='table-header col-plain'>" + col2 + "</div>").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 = $("<a/>")
.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") {
$("<div/>").html(container).addClass("col-plain").addClass(rowColor).appendTo(table);
}
$("<div/>").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();
});

70
docs/search.html Normal file
View File

@@ -0,0 +1,70 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) -->
<title>Search (FtcRobotController API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="search">
<meta name="generator" content="javadoc/SearchWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="search-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="org/firstinspires/ftc/teamcode/subsystems/chute/package-summary.html">Package</a></li>
<li>Class</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html#search">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<h1 class="title">Search</h1>
<div>
<input type="text" id="page-search-input" disabled placeholder="Search">
<input type="reset" id="page-search-reset" disabled value="Reset" style="margin: 6px;">
<details class="page-search-details">
<summary id="page-search-expand">Additional resources</summary>
</details>
</div>
<div class="page-search-info">
<p>The <a href="help-doc.html#search">help page</a> provides an introduction to the scope and syntax of JavaDoc search.</p>
<p>You can use the &lt;ctrl&gt; or &lt;cmd&gt; keys in combination with the left and right arrow keys to switch between result tabs in this page.</p>
<p>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.</p>
<span id="page-search-link">link</span><button class="copy" aria-label="Copy URL" id="page-search-copy"><img src="copy.svg" alt="Copy URL"><span data-copied="Copied!">Copy</span></button>
<p>
<input type="checkbox" id="search-redirect" disabled>
<label for="search-redirect">Redirect to first result</label></p>
</div>
<p id="page-search-notify">Loading search index...</p>
<div id="result-section" style="display: none;">
<div id="result-container"></div>
<script type="text/javascript" src="search-page.js"></script>
</div>
</main>
</div>
</div>
</body>
</html>

458
docs/search.js Normal file
View File

@@ -0,0 +1,458 @@
/*
* Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
"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 = "<span class='result-highlight'>$&</span>";
const NO_MATCH = {};
const MAX_RESULTS = 300;
function checkUnnamed(name, separator) {
return name === "<Unnamed>" || !name ? "" : name + separator;
}
function escapeHtml(str) {
return str.replace(/</g, "&lt;").replace(/>/g, "&gt;");
}
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 += "<span class='result-highlight'>";
text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1)));
text += "</span>";
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("<li class='ui-autocomplete-category'>" + categories[item.category] + "</li>");
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("<li class='ui-static-link'><a href='" + pathtoroot + "search.html?q="
+ encodeURI(widget.term) + "'>Go to search page</a></li>");
},
_renderItem: function(ul, item) {
var li = $("<li/>").appendTo(ul);
var div = $("<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 + "<span class='search-tag-holder-result'> (" + idx.h + ")</span><br><span class='search-tag-desc-result'>"
+ idx.d + "</span><br>");
} else {
div.html(label + "<span class='search-tag-holder-result'> (" + idx.h + ")</span>");
}
} 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(" <a href='#" + id + "' class='anchor-link' aria-label='" + messages.linkToSection
+ "'><img src='" + pathtoroot + "link.svg' alt='" + messages.linkIcon +"' tabindex='0'"
+ " width='16' height='16'></a>");
}
});
$(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();
});

1272
docs/stylesheet.css Normal file

File diff suppressed because it is too large Load Diff

1
docs/tag-search-index.js Normal file
View File

@@ -0,0 +1 @@
tagSearchIndex = [{"l":"Basic Usage (Testing)","h":"class org.firstinspires.ftc.teamcode.subsystems.chute.Chute","d":"Section","u":"org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#basic-usage-testing--heading"},{"l":"Features","h":"class org.firstinspires.ftc.teamcode.subsystems.chute.Chute","d":"Section","u":"org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#features-heading"},{"l":"Usage with Real Hardware","h":"class org.firstinspires.ftc.teamcode.subsystems.chute.Chute","d":"Section","u":"org/firstinspires/ftc/teamcode/subsystems/chute/Chute.html#usage-with-real-hardware-heading"}];updateSearchResults();

View File

@@ -0,0 +1 @@
typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","l":"Chute"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","l":"ChuteController"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","l":"MockMotor"},{"p":"org.firstinspires.ftc.teamcode.subsystems.chute","l":"MockPotentiometer"}];updateSearchResults();