Forum | Documentation | Website | Blog

Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • docs/docs.beagleboard.io
  • jkridner/docs
  • lorforlinux/docs.beagleboard.io
  • harshilbhatt2001/docs.beagleboard.io
  • Krishna_13/docs.beagleboard.io
  • gpioblink/docs.beagleboard.io
  • dhruvag2000/docs.beagleboard.io
  • jiande/docs.beagleboard.io
  • beagleplay/docs
  • beaglev-ahead/docs
  • sabeeh.khan14/docs.beagleboard.io
  • yoder/docs.beagleboard.io
  • jdneal/docs.beagleboard.io
  • ayush1325/docs.beagleboard.io
  • vishnumaiea/docs.beagleboard.io
  • andrei1998/docs-beagleboard-io-zephyr-demo
  • andrei1998/docs.beagleboard.io
  • nmenon/docs.beagleboard.io
  • epenguin/docs.beagleboard.io
  • paul_buxton/docs.beagleboard.io
  • anujdeshpande/docs.beagleboard.io
  • melta101/docs.beagleboard.io
  • krvprashanth/docs.beagleboard.io
  • samdai/docs.beagleboard.io
  • bustedwing1/docs.beagleboard.io
  • cshegedus/docs.beagleboard.io
  • wmat/docs.beagleboard.io
  • Roger18/docs.beagleboard.io
  • himanshuk/docs.beagleboard.io
  • vvaishak/docs.beagleboard.io
  • alecdenny/docs.beagleboard.io
  • san.s.kar03/docs.beagleboard.io
  • andrei1998/docs-beagleboard-io-fixes
  • SomeInterestingUserName/docs.beagleboard.io
  • edge-ai/docs
  • andrei1998/docs-beagleboard-io-rtc
  • devarsht/docs.beagleboard.io
  • andrei1998/docs-beagleboard-io-deepak-fork
  • superchamp234/docs.beagleboard.io
  • lranders/docs.beagleboard.io
  • kushalkr/docs.beagleboard.io
  • mkorpershoek/docs.beagleboard.io
  • prajnark/docs.beagleboard.io
  • touchhowling/docs.beagleboard.io
  • RobertCNelson/docs.beagleboard.io
  • Shankari02/docs.beagleboard.io
  • LucienMorey/docs.beagleboard.io
  • ketanthorat/docs.beagleboard.io
  • jjateen/docs.beagleboard.io
  • Whiz-Manas/mana-docs-beagleboard-io
  • beagley-ai/zephyr/docs.beagleboard.io
  • giuliomoro/docs.beagleboard.io
52 results
Show changes
Commits on Source (653)
Showing
with 727 additions and 106 deletions
image: beagle/sphinx-build-env:latest
image: registry.git.beagleboard.org/docs/sphinx-build-env:latest
variables:
GIT_SUBMODULE_STRATEGY: recursive
cache:
key: sphinx-build-env-docs-002
key: sphinx-build-env-docs-003
paths:
- .venv
- .cache
......@@ -45,7 +45,7 @@ docs:
- "build: [html]"
- "build: [pdf]"
tags:
- docs
- docker-amd64
script:
- ./gitlab-build.sh publish
artifacts:
......
[submodule "books/beaglebone-cookbook/code"]
path = books/beaglebone-cookbook/code
url = https://git.beagleboard.org/beagleboard/beaglebone-cookbook-code.git
url = https://openbeagle.org/beagleboard/beaglebone-cookbook-code.git
[submodule "books/pru-cookbook/code"]
path = books/pru-cookbook/code
url = https://git.beagleboard.org/beagleboard/pru-cookbook-code
url = https://openbeagle.org/beagleboard/pru-cookbook-code
[submodule "projects/librobotcontrol"]
path = projects/librobotcontrol
url = https://git.beagleboard.org/beagleboard/librobotcontrol
url = https://openbeagle.org/beagleboard/librobotcontrol
:orphan:
.. _not-found:
Document not found
##################
.. todo::
We need a 404 document to help people handle broken links (report, find, etc.).
......@@ -14,21 +14,21 @@ where to start then you can checkout our contribution documents to help you with
### Code of Conduct
This project and everyone participating in it is governed by the [BeagleBoard.org Code of Conduct](https://docs.beagleboard.org/latest/intro/contribution/index.html#code-of-conduct). By participating, you are expected to uphold this code. Please report unacceptable behavior to [coc@bbb.io](mailto:coc@bbb.io) or contact one of the administrators on https://forum.beagleboard.org.
This project and everyone participating in it is governed by the [BeagleBoard.org Code of Conduct](https://docs.beagleboard.org/latest/intro/contribution/code-of-conduct.html). By participating, you are expected to uphold this code. Please report unacceptable behavior to [coc@bbb.io](mailto:coc@bbb.io) or contact one of the administrators on https://forum.beagleboard.org.
### Style and usage guidelines
If you are new to Sphinx, RST, or git then you can checkout out our [Style and usage guidelines](https://docs.beagleboard.org/latest/intro/contribution/index.html#style-and-usage-guidelines).
If you are new to Sphinx, RST, or git then you can checkout out our [How can I contribute? guide](https://docs.beagleboard.org/latest/intro/contribution/how.html).
See more at https://docs.beagleboard.org/en/latest/intro/contribution/.
See more at https://docs.beagleboard.org/latest/intro/contribution/.
### Forking the Project
You can [fork](https://docs.gitlab.com/ee/user/project/repository/forking_workflow.html) this project repository to create and submit changes to the documentation. BeagleBoard documentation is generated using [**Sphinx** ](https://www.sphinx-doc.org/en/master/) documentation tool. Sphinx uses the [**reStructuredText**](https://docutils.sourceforge.io/rst.html) (.rst) markup language by default. Some files are also written in [**Markdown**](https://docs.gitlab.com/ee/user/markdown.html) (.md) format. GitLab can render previews for both RST and MD files. So if you do not want to use any external tools to edit the documentation, you can do that within your browser and use the `Preview` button in GitLab to view how the changes will actually look like.
You can [fork](https://openbeagle.org/help/user/project/repository/forking_workflow.md) this project repository to create and submit changes to the documentation. BeagleBoard documentation is generated using [**Sphinx** ](https://www.sphinx-doc.org/en/master/) documentation tool. Sphinx uses the [**reStructuredText**](https://docutils.sourceforge.io/rst.html) (.rst) markup language by default. Some files are also written in [**Markdown**](https://docs.gitlab.com/ee/user/markdown.html) (.md) format. GitLab can render previews for both RST and MD files. So if you do not want to use any external tools to edit the documentation, you can do that within your browser and use the `Preview` button in GitLab to view how the changes will actually look like.
#### Using A Browser
Using a browser is the easiest way to contribute to this project, if you are a beginner, or if your suggestions for changes are small. Though, some Git version control knowledge is preferrable. You can learn more about [Git and GitLab from here](https://docs.gitlab.com/ee/topics/git/).
Using a browser is the easiest way to contribute to this project, if you are a beginner, or if your suggestions for changes are small. Though, some Git version control knowledge is preferrable. You can learn more about [Git and GitLab from here](https://openbeagle.org/help/topics/git/index.md).
You can create a fork of this repository to your GitLab account using the `Forks` button found on the main page of the project. This will create a stand-alone copy of the repository for you to work with.
......@@ -65,4 +65,8 @@ VS Code is not limited to running from a folder as a workspace, or as a native a
## FAQ
* [Frequently Asked Questions category on the BeagleBoard.org Forum](https://forum.beagleboard.org/c/faq/19)
* [Frequently Asked Questions category on the BeagleBoard.org Forum](https://forum.beagleboard.org/c/faq)
## Feedback
* [Site Feedback category on the BeagleBoard.org Forum](https://forum.beagleboard.org/c/site-feedback)
VERSION_MAJOR = 1
VERSION_MINOR = 0
PATCHLEVEL =
VERSION_TWEAK =
EXTRAVERSION = wip
.wy-side-nav-search > a img.logo {
.wy-side-nav-search>a img.logo {
width: 340px;
height: 66px;
}
.rst-content div.figure, .rst-content figure {
.rst-content div.figure,
.rst-content figure {
text-align: center;
}
......@@ -36,7 +37,7 @@
background-color: #25282b;
}
.wy-nav-top{
.wy-nav-top {
background-color: #25282b;
background-color: #25282b;
}
......@@ -62,7 +63,7 @@
/* Force table content font-size in responsive tables to be 100%
* fixing larger font size for paragraphs in the kconfig tables */
.wy-table-responsive td p {
.wy-table-responsive td p {
font-size: 100%;
}
......@@ -74,6 +75,68 @@ span.strike {
overflow: auto;
}
/* Site horizontal spacing */
.bd-main .bd-content .bd-article-container {
max-width: 100%; /* default is 60em */
}
\ No newline at end of file
max-width: 120em;
/* default is 60em */
}
.bd-page-width {
max-width: 120rem;
/* default is 88rem */
}
/* Figure headerlink */
figure a.headerlink {
position: static;
}
/* Primary sidebar toggle button */
#pst-primary-sidebar.collapsed {
overflow: hidden;
padding: 0;
width: 0; /* Collapse the sidebar */
transition: none;
}
#pst-secondary-sidebar.collapsed {
overflow: hidden;
padding: 0;
width: 0; /* Collapse the sidebar */
transition: none;
}
#pst-secondary-sidebar {
padding-left: 0px;
}
/* Toggle button styles */
.sidebar-toggle-btn {
margin-top: 44px; /* Space between sidebar and button */
padding: 7px; /* Set padding for the button, horizontally more */
background-color: #F16321; /* Button background color */
color: white; /* Text color */
border: none; /* Remove border */
cursor: pointer; /* Pointer cursor on hover */
display: block; /* Ensure the button is block-level */
font-size: 20px; /* Adjust font size */
font-weight: bold; /* Bold text */
height: 40px; /* Set a fixed height for the button */
width: auto; /* Width based on content */
line-height: 20px; /* Vertically center the text */
}
#toggle-primary-sidebar.sidebar-toggle-btn{
border-radius: 0 5px 5px 0; /* Rounded corners */
}
#toggle-secondary-sidebar.sidebar-toggle-btn{
border-radius: 5px 0 0 5px; /* Rounded corners */
}
/* Optional: Adding a hover effect */
.sidebar-toggle-btn:hover {
background-color: #C7480D; /* Slightly darker blue on hover */
}
......@@ -9,6 +9,8 @@
\usepackage{longtable}
\usepackage{fontspec}
\usepackage{comment}
\usepackage[maxfloats=256]{morefloats}
\maxdeadcycles=1000
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\setmainfont{DejaVuSans}
\setmonofont{FreeMono}
......
{% extends "pydata_sphinx_theme/layout.html" %}
{% block extrahead %}
<script>
document.addEventListener("DOMContentLoaded", function () {
// The redirect_folders dictionary is passed from html_context
const redirectFolders = JSON.parse('{{ redirect_folders | tojson | safe }}');
// Get the current URL
let currentUrl = window.location.href;
// Flag to check if valid redirect is found
let redirectFound = false;
// Iterate over the redirect_folders key-value pairs
for (const [key, value] of Object.entries(redirectFolders)) {
if (currentUrl.includes("/" + key)) {
// Determine the replacement value
let replacement = value === "" ? "" : "/" + value;
// Create a new URL by replacing "/key" with the replacement value
let newUrl = currentUrl.replace("/" + key, replacement);
// Make an HTTP request to check if the new URL exists
fetch(newUrl, { method: "HEAD" })
.then(response => {
if (response.ok) {
// Valid redirect is found
redirectFound = true;
// Update the heading with the correct information
const headingElement = document.getElementById('pageHeading');
if (headingElement) {
headingElement.textContent = "Page Moved!";
}
// Update the message with the correct link
const redirectMessageElement = document.getElementById('redirectMessage');
if (redirectMessageElement) {
redirectMessageElement.innerHTML = `We found the correct page you are looking for <a href="${newUrl}" id="correctPageLink">here</a>.`;
}
document.getElementById('redirectInfo').style.display = "block";
// If the response is OK, show the modal and initiate the countdown
const redirectModal = new bootstrap.Modal(document.getElementById('redirectModal'), {
backdrop: 'static', // Prevents closing the modal by clicking outside
keyboard: false // Disables closing the modal with the keyboard
});
redirectModal.show();
let countdownValue = 5;
const countdownElement = document.getElementById('countdownNumber');
if (countdownElement) {
countdownElement.textContent = countdownValue;
}
// Variable to track if countdown should continue
let countdownActive = true;
// Countdown from 5 to 1
const countdownInterval = setInterval(() => {
if (!countdownActive) {
clearInterval(countdownInterval);
return;
}
countdownValue--;
if (countdownElement) {
countdownElement.textContent = countdownValue;
}
// When countdown reaches 1, redirect
if (countdownValue <= 1) {
clearInterval(countdownInterval);
window.location.href = newUrl;
}
}, 1000);
// Event listener for "Redirect Now" button
document.getElementById('redirectNow').addEventListener('click', () => {
window.location.href = newUrl;
});
// Event listener for "Cancel" button
document.getElementById('cancelRedirect').addEventListener('click', () => {
countdownActive = false;
clearInterval(countdownInterval);
});
// Event listener for "Close" button in the modal header
document.getElementById('closeRedirect').addEventListener('click', () => {
countdownActive = false;
clearInterval(countdownInterval);
});
} else {
// If the response is not OK, proceed to check other redirects
console.log(`No valid page found at ${newUrl}`);
}
})
.catch(error => {
console.error("Error checking the URL:", error);
});
break;
}
}
if (!redirectFound) {
// In case the link test doesn't include redirectFolders
const headingElement = document.getElementById('pageHeading');
if (headingElement) {
headingElement.textContent = "Page Not Found (404)";
}
document.getElementById('redirectInfo').style.display = "block";
}
});
</script>
{{ super() }}
{% endblock %}
{% block docs_body %}
<div class="document">
<h1 id="pageHeading">Page Loading....</h1> <!-- Default heading -->
<div id="redirectInfo" style="display: none;">
<p id="redirectMessage">Oops! The page you're looking for does not exist.</p>
<p>You can return to the <a href="{{ pathto(master_doc) }}">home page</a>.</p>
<p>If you believe this is a broken link, please <a data-bs-toggle="modal" data-bs-target="#feedbackModal"
href="#" onclick="getFeedbackButtonhref(this)">let us know</a>.</p>
</div>
</div>
<!-- Redirect Modal -->
<div class="modal fade" id="redirectModal" aria-labelledby="redirectModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title m-0 text-dark" id="redirectModalLabel">Page Moved - Redirecting</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"
id="closeRedirect"></button>
</div>
<div class="modal-body text-center">
<p>We have found the page you are looking for, redirecting in....</p>
<div class="countdown display-1 fw-bold" id="countdownNumber">5</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal"
id="cancelRedirect">Cancel</button>
<button type="button" class="btn btn-primary" id="redirectNow">Redirect Now</button>
</div>
</div>
</div>
</div>
{{ super() }}
{% endblock %}
\ No newline at end of file
<a href="https://creativecommons.org/licenses/by-sa/4.0/" style="text-decoration:none">
<img src="https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/by-sa.svg"/>
<p>This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.</p>
</a>
<a role="button" data-bs-toggle="modal" data-bs-target="#feedbackModal" href="#" onclick="getFeedbackButtonhref(this)">
<i class="fa-regular fa-message"></i> Provide Feedback
</a>
<div class="modal fade" id="feedbackModal" aria-labelledby="feedbackModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title m-0 text-dark" id="feedbackModalLabel">Feedback</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body text-center">
<div class="btn-group mb-3" role="group" aria-label="Basic radio toggle button group" id="feedbackType"
onChange="feedbackHandler()">
<input type="radio" class="btn-check" name="feedbackType" id="btnradio1" autocomplete="off"
value="Issue">
<label class="btn btn-outline-dark shadow-none" for="btnradio1"><i
class="fa-solid fa-triangle-exclamation"></i> Issue</label>
<input type="radio" class="btn-check" name="feedbackType" id="btnradio2" autocomplete="off"
value="Feedback" checked>
<label class="btn btn-outline-dark shadow-none" for="btnradio2"><i
class="fa-regular fa-message"></i> Feedback</label>
<input type="radio" class="btn-check" name="feedbackType" id="btnradio3" autocomplete="off"
value="Idea">
<label class="btn btn-outline-dark shadow-none" for="btnradio3"><i
class="fa-solid fa-lightbulb"></i> Idea</label>
</div>
<div class="mb-3">
<input type="title" class="form-control bg-light text-dark" id="feedbackModalTitle"
placeholder="Title" onChange="feedbackHandler()">
</div>
<div class="mb-3">
<textarea class="form-control bg-light text-dark" id="feedbackModalDescription" minlength="13"
rows="3" placeholder="Description" onChange="feedbackHandler()"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" onclick="feedbackClear()">Clear
& Close</button>
<span id="generateLinkButtonTooltip" data-bs-placement="bottom" data-bs-toggle="tooltip">
<a href="javascript:void(0);" id="feedbacklink" type="button"
class="btn btn-primary disabled text-light">
<i class="fa-solid fa-up-right-from-square"></i> Generate OpenBeagle Issue
</a>
</span>
</div>
</div>
</div>
</div>
<script>
var titleMinLength = 4
var descriptionMinLength = 12
document.body.appendChild(document.getElementById('feedbackModal'));
var generateLinkButtonTooltip = document.getElementById("generateLinkButtonTooltip")
var link = document.getElementById("feedbacklink")
var gitlab_project = "{{gitlab_project}}"
var title = document.getElementById("feedbackModalTitle")
var description = document.getElementById("feedbackModalDescription")
var generatedFromLink = ""
title.placeholder = "Title (minimum " + titleMinLength + " characters)"
description.placeholder = "Description (minimum " + descriptionMinLength + " characters)"
function feedbackHandler() {
var type = document.querySelector('input[name="feedbackType"]:checked').value
if (!gitlab_project.match(/^[a-zA-Z]+:\/\//)) {
gitlab_project = 'https://' + gitlab_project;
}
if (title.value.length >= titleMinLength && description.value.length >= descriptionMinLength) {
link.target = "_blank"
link.classList.remove("disabled");
generateLinkButtonTooltip.title = "You must be logged in to OpenBeagle.org to generate an Issue!"
link.href = gitlab_project + "/-/issues/new?issue[title]=" + type + ": " + title.value + "&issue[description]=" + description.value + "%0A%0AGenerated from: " + generatedFromLink.replace('#', '%23')
} else {
link.classList.add("disabled");
generateLinkButtonTooltip.title = "Add proper title and description to activate the link!"
}
}
function feedbackClear() {
title.value = ""
description.value = ""
link.href = ""
link.classList.add("disabled");
}
document.addEventListener('DOMContentLoaded', function () {
const headerlinks = document.getElementsByClassName("headerlink");
for (let i = 0; i < headerlinks.length; i++) {
if (headerlinks[i].classList.contains('headerlink-feedback')) {
continue;
}
headerlinks[i].innerHTML = `<i class="fa-solid fa-link"></i>`;
headerlinks[i].addEventListener('click', function (event) {
event.preventDefault();
const link = this.href;
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(link).then(() => {
console.log("Link copied to clipboard:", link);
this.innerHTML = `<i class="fa-regular fa-square-check"></i>`;
setTimeout(() => {
this.innerHTML = `<i class="fa-solid fa-link"></i>`;
}, 1000);
}).catch(err => {
console.error("Failed to copy:", err);
});
} else {
fallbackCopyText(link, this);
}
});
const feedbackLink = headerlinks[i].cloneNode(true);
feedbackLink.classList.add('headerlink-feedback');
feedbackLink.innerHTML = '<i class="fa-regular fa-message"></i>';
feedbackLink.title = "Provide Feedback";
feedbackLink.setAttribute("data-bs-toggle", "modal");
feedbackLink.setAttribute("data-bs-target", "#feedbackModal");
feedbackLink.setAttribute("onclick", "getFeedbackButtonhref(this)");
if (headerlinks[i].parentNode) {
headerlinks[i].parentNode.insertBefore(feedbackLink, headerlinks[i].nextSibling || null);
}
}
});
function fallbackCopyText(text, element) {
const textarea = document.createElement("textarea");
textarea.value = text;
document.body.appendChild(textarea);
textarea.select();
try {
document.execCommand("copy");
element.innerHTML = `<i class="fa-regular fa-square-check"></i>`;
setTimeout(() => {
element.innerHTML = `<i class="fa-solid fa-link"></i>`;
}, 1000);
} catch (err) {
console.error("Fallback: Failed to copy:", err);
}
document.body.removeChild(textarea);
}
function getFeedbackButtonhref(clickedFeedbackLink) {
generatedFromLink = clickedFeedbackLink.href
feedbackHandler()
}
</script>
\ No newline at end of file
<a role="button" href="https://forum.beagleboard.org" target="_blank">
<i class="fa-brands fa-discourse"></i> Discuss on Forum
</a>
{% extends "!layout.html" %}
{% block document %}
{% if pages_slug != "latest" %}
<div class="wy-alert wy-alert-danger">
The <a href="{{pages_url}}/latest">latest development version</a>
of this page may be more current than this released {{ version }} version.
</div>
{% else %}
<div class="wy-alert wy-alert-danger">
This is the latest (main) BeagleBoard documentation.
If you are looking for stable releases, use the
drop-down menu on the bottom-left and select the desired version.
</div>
{% endif %}
{{ super() }}
{% endblock %}
{% block menu %}
{% include "versions.html" %}
{{ super() }}
{% if reference_links %}
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Reference</span></p>
<ul>
{% for title, url in reference_links.items() %}
<li class="toctree-l1">
<a class="reference internal" href="{{ url }}">{{ title }}</a>
</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% endblock %}
{% extends "pydata_sphinx_theme/layout.html" %}
{% block docs_navbar %}
<!-- Top version and announcement message -->
<script>
// Function to generate version and announcement banner HTML
function getBannerHTML() {
return `
{% if 'docs.beagleboard.org' not in docs_url%}
<aside id="bd-header-version-warning" class="d-print-none" aria-label="Version warning">
<div class="bd-header-announcement__content ms-auto me-auto">
<div class="sidebar-message">
{{ current_url }}
{% if 'beagleboard.io/docs.beagleboard.io' in docs_url %}
{{forked_version_message}}
{% elif 'docs.beagleboard.io' in docs_url %}
{{development_version_message}}
{% else %}
{{unknown_version_message}}
{% endif %}
<a class="btn text-wrap font-weight-bold ms-3 my-1 align-baseline pst-button-link-to-stable-version" href="{{version_link}}">
{{version_link_text}}
</a>
</div>
</div>
</aside>
{% endif %}
{% if announcement_message != '' %}
<aside class="bd-header-announcement" aria-label="Announcement">
<div class="bd-header-announcement__content">{{ announcement_message }}</div>
</aside>
{% endif %}
`;
}
// Get the target element where the banners will be added
const bannerDiv = document.getElementsByClassName('pst-async-banner-revealer')[0];
// Add version banner and announcement banner if bannerDiv is valid
if (bannerDiv) {
bannerDiv.innerHTML = getBannerHTML();
}
</script>
{{ super() }}
{% endblock docs_navbar %}
{% block docs_main %}
<script>
document.addEventListener('DOMContentLoaded', () => {
// Add primary sidebar toggle button
const primarySidebar = document.getElementById('pst-primary-sidebar');
if (primarySidebar) {
addSidebarToggleButton(
primarySidebar,
'primary',
'sidebar-toggle-btn',
'<i class="fa-solid fa-caret-left"></i>',
'<i class="fa-solid fa-caret-right"></i>',
'after'
);
}
// Add secondary sidebar toggle button
const secondarySidebar = document.getElementById('pst-secondary-sidebar');
if (secondarySidebar) {
addSidebarToggleButton(
secondarySidebar,
'secondary',
'sidebar-toggle-btn',
'<i class="fa-solid fa-caret-right"></i>',
'<i class="fa-solid fa-caret-left"></i>',
'before'
);
}
/**
* Adds a toggle button for a sidebar with visibility and state management.
* @param {HTMLElement} sidebar - The sidebar element to toggle.
* @param {string} key - A unique key for localStorage and button id.
* @param {string} buttonClass - CSS class for the toggle button.
* @param {string} collapseHTML - HTML for the button when the sidebar is collapsed.
* @param {string} expandHTML - HTML for the button when the sidebar is expanded.
* @param {string} position - Position to insert the button ('before' or 'after').
*/
function addSidebarToggleButton(sidebar, key, buttonClass, collapseHTML, expandHTML, position) {
const toggleButton = document.createElement('button');
toggleButton.id = `toggle-${key}-sidebar`;
toggleButton.innerHTML = sidebar.classList.contains('collapsed') ? expandHTML : collapseHTML;
toggleButton.className = buttonClass;
// Insert the toggle button
if (position === 'before') {
sidebar.parentNode.insertBefore(toggleButton, sidebar);
} else if (position === 'after') {
sidebar.parentNode.insertBefore(toggleButton, sidebar.nextSibling);
}
// Restore collapsed state from localStorage
const collapsedState = localStorage.getItem(`${key}SidebarCollapsed`) === 'true';
if (collapsedState) {
sidebar.classList.add('collapsed');
toggleButton.innerHTML = expandHTML;
}
// Handle toggle button click
toggleButton.addEventListener('click', () => {
sidebar.classList.toggle('collapsed');
// Update button content and save state
if (sidebar.classList.contains('collapsed')) {
toggleButton.innerHTML = expandHTML;
localStorage.setItem(`${key}SidebarCollapsed`, 'true');
} else {
toggleButton.innerHTML = collapseHTML;
localStorage.setItem(`${key}SidebarCollapsed`, 'false');
}
});
// Check visibility of the toggle button
function checkToggleVisibility() {
const existingToggleButton = document.querySelector(
`.pst-navbar-icon.sidebar-toggle.${key}-toggle`
);
if (existingToggleButton && existingToggleButton.offsetParent !== null) {
toggleButton.style.display = 'none'; // Hide custom toggle button
} else {
toggleButton.style.display = 'block'; // Show custom toggle button
}
}
// Update button visibility if the sidebar is removed
function updateButtonVisibility() {
if (window.getComputedStyle(sidebar).display === 'none') {
toggleButton.remove(); // Remove button if sidebar is hidden
} else if (!document.querySelector(`#toggle-${key}-sidebar`)) {
// Re-add the button if missing
if (position === 'before') {
sidebar.parentNode.insertBefore(toggleButton, sidebar);
} else if (position === 'after') {
sidebar.parentNode.insertBefore(toggleButton, sidebar.nextSibling);
}
}
}
// Initial visibility check
checkToggleVisibility();
updateButtonVisibility();
// Monitor window resize for dynamic button visibility updates
window.addEventListener('resize', () => {
checkToggleVisibility();
updateButtonVisibility();
});
}
});
</script>
{{ super() }}
{% endblock docs_main %}
\ No newline at end of file
{% for board, path, page, git, forum in board_details %}
{% if path+'/' in pagename %}
<a role="button" data-bs-toggle="modal" data-bs-target="#licenseTerms" href="#">
<i class="fa-regular fa-rectangle-list"></i> License Terms
</a>
<div class="modal fade" id="licenseTerms" aria-labelledby="licenseTermsLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title m-0 text-dark" id="licenseTermsLabel">{{board}} - License Terms</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<ul class="list-group list-group-flush">
<li class="list-group-item">This work is licensed under a <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a></li>
<li class="list-group-item">Design materials and license can be found in the <a href="{{git}}">{{board}} git repository</a></li>
<li class="list-group-item">Use of the boards or design materials constitutes an agreement to the <a href="{{docs_url}}/boards/terms-and-conditions.html">Terms & Conditions</a></li>
<li class="list-group-item">Software images and purchase links available on the <a href="{{page}}">{{board}} board page</a></li>
<li class="list-group-item">For export, emissions and other compliance, see <a href="{{docs_url}}/{{path}}/06-support.html">Support Information</a></li>
<li class="list-group-item">All support for this design is through BeagleBoard.org community at <a href="{{forum}}">BeagleBoard.org forum.</a></li>
</ul>
</div>
</div>
</div>
</div>
<script>
document.body.appendChild(document.getElementById('licenseTerms'));
</script>
{% endif %}
{% endfor %}
\ No newline at end of file
<div class="card bg-light mt-4 text-center">
<div class="card-body">
<p class="card-text text-dark">
<a href="https://www.beagleboard.org/" target="_blank">BeagleBoard.org</a>
is all about being open, please discuss in public on our
<a href="https://forum.beagleboard.org" target="_blank">forum</a>!</p>
</div>
</div>
<div class="card mb-3">
<div class="card-header bg-primary text-light fw-bold">
Why are we doing this?
</div>
<div class="card-body">
<p class="card-text text-dark">
We believe in making computers open again to democratize technology and empower individuals and organizations to explore, experiment, and create without the constraints of proprietary systems.
</p>
</div>
</div>
<div class="card mb-3">
<div class="card-header bg-warning text-dark fw-bold">
What are we doing?
</div>
<div class="card-body">
<p class="card-text text-dark">
We design versatile and affordable single-board computers to provide developers, hobbyists, and educators with a platform for prototyping, experimentation, and production of embedded systems. Our comprehensive documentation, tutorials, and vibrant online community support users in their projects and foster knowledge sharing.
</p>
</div>
</div>
<div class="card mb-3">
<div class="card-header bg-success text-light fw-bold">
How are we doing it?
</div>
<div class="card-body">
<p class="card-text text-dark">
Through open-source hardware designs, diverse software support, and active community engagement, we enable users to customize, innovate, and collaborate effortlessly in embedded computing.
</p>
</div>
</div>
<div class="card mb-3">
<div class="card-header bg-dark text-light fw-bold">
Support us <i class="fa-solid fa-hand-holding-dollar"></i>
</div>
<div class="card-body">
<p class="card-text text-dark">
The BeagleBoard.org Foundation is a Michigan, USA-based 501(c)(3) non-profit corporation existing to provide education in and collaboration around the design and use of open-source software and hardware in embedded computing.
</p>
</div>
<div class="card-footer d-grid gap-2">
<a href="https://patreon.com/beagleboard" class="btn btn-danger text-light"><i class="fa-brands fa-patreon"></i> Become a Patreon</a>
<a href="https://github.com/sponsors/beagleboard" class="btn btn-dark text-light"><i class="fa-brands fa-github"></i> Sponsor on GitHub</a>
</div>
</div>
{% for board, path, oshw_id in oshw_details %}
{% if path+'/' in pagename %}
<div class="card bg-light mt-4 text-center">
<div class="card-header">
{% if path+'/' in pagename %}
<div class="card bg-light mt-4 text-center">
<div class="card-header">
{{board}}
</div>
<div class="card-body">
</div>
<div class="card-body">
<p class="card-text text-dark">
<a href="https://certification.oshwa.org/{{ oshw_id|lower }}.html" target="_blank">
{% if pages_slug %}
<img src="{{docs_url}}/_static/images/oshw/{{board}}_{{oshw_id}}.svg" alt="{{board}} OSHW mark"/>
{% else %}
<img src="../../../../_static/images/oshw/{{board}}_{{oshw_id}}.svg" alt="{{board}} OSHW mark"/>
{% endif %}
{% if docs_url %}
<img src="{{docs_url}}/_static/images/oshw/{{board}}_{{oshw_id}}.svg" alt="{{board}} OSHW mark" />
{% else %}
<img src="../../../../_static/images/oshw/{{board}}_{{oshw_id}}.svg" alt="{{board}} OSHW mark" />
{% endif %}
</a>
</p>
</div>
</div>
{% endif %}
</div>
{% endif %}
{% endfor%}
\ No newline at end of file
<a role="button" data-bs-toggle="modal" data-bs-target="#todoModal" href="#" id="modalfortodoitems">
<button type="button" class="btn btn-danger">Outstanding todo items</button>
</a>
<div class="modal fade" id="todoModal" aria-labelledby="todoModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title m-0 text-dark" id="todoModalLabel">Outstanding todo items</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<ul class="list-group list-group-flush" id="todolist">
<!-- Auto generated for page -->
</ul>
</div>
</div>
</div>
</div>
<script>
document.body.appendChild(document.getElementById('todoModal'));
var modalfortodoitems = document.getElementById('modalfortodoitems');
var modalfortodoitemsparent = modalfortodoitems.parentNode;
var todoItems = document.getElementsByClassName('admonition-todo');
var todolist = document.getElementById('todolist')
if(todoItems.length == 0 || !todoItems[0].hasAttribute('id')) {
modalfortodoitemsparent.remove();
} else {
for (var i = 0; i < todoItems.length; ++i) {
var todoItem = document.createElement('li');
var link = document.createElement('a');
link.textContent = todoItems[i].getElementsByTagName('p')[1].innerHTML;
link.href = '#' + todoItems[i].id;
link.addEventListener('click', function() {
// Use Bootstrap's modal method to hide the modal
const todoModal = document.getElementById('todoModal');
const modal = bootstrap.Modal.getInstance(todoModal);
modal.hide();
});
todoItem.appendChild(link);
todoItem.classList.add('list-group-item');
todolist.appendChild(todoItem);
}
}
</script>
\ No newline at end of file
{# Add rst-badge after rst-versions for small badge style. #}
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> BeagleBoard Project</span>
v: {{ pages_slug }}
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>{{ _('Document Release Versions') }}</dt>
{% for version_slug in versions %}
<dd><a href="{{pages_url}}/{{version_slug}}">{{ version_slug }}</a></dd>
{% endfor %}
</dl>
<dl>
<dt>{{ _('Downloads') }}</dt>
<dd><a href="{{docs_url}}/beagleboard-docs.pdf">PDF</a></dd>
</dl>
<dl>
<dt>{{ _('BeagleBoard.org Links') }}</dt>
<dd>
<a href="https://git.beagleboard.org/docs/docs.beagleboard.io/">Docs Source</a>
</dd>
</dl>
</div>
</div>
......@@ -32,6 +32,8 @@ The type of cable you have to procure is listed in the table below:
+----------------------------+---------------------------+---------------+---------------------+
| Board | USB | Host capable? | Power required [2]_ |
+============================+===========================+===============+=====================+
| BeagleY-AI | High-speed USB-C | Unsupported | 1000mA |
+----------------------------+---------------------------+---------------+---------------------+
| BeaglePlay | High-speed USB-C | Yes [1]_ | 500mA |
+----------------------------+---------------------------+---------------+---------------------+
| BeagleV-Fire | High-speed USB-C | Yes [1]_ | 750mA |
......@@ -165,7 +167,7 @@ JTAG debug Cables
TagConnect (JTAG)
==================
Boards like :ref:`beagleconnect_freedom_home`, :ref:`beaglev-ahead-home`, :ref:`beaglev-fire-home`, and :ref:`beagleplay-home` use the TagConnect
Boards like :ref:`beagleconnect-freedom-home`, :ref:`beaglev-ahead-home`, :ref:`beaglev-fire-home`, and :ref:`beagleplay-home` use the TagConnect
interface which allows you to perform firmware updates and JTAG hardware debugging. To use the interface, the the parts below from
`tag-connect <https://www.tag-connect.com>`_ are required.
......
......@@ -44,7 +44,7 @@ USB HUBS
- `Inland 4 Port <http://www.microcenter.com/product/360458/4-Port_USB_20_Hub>`_
- `Manhattan 10-port HUB <http://www.microcenter.com/product/393316/10-Port_USB_20_Hi-Speed_Desktop_Hub>`_
- `4-Port USB Cable HUB <http://www.microcenter.com/product/354122/4-Port_USB_20_Cable_Hub>`_
- `D-LINK DUB-H7 <http://www.dlink.com/us/en/home-solutions/connect/usb/dub-h7-7-port-usb-2-0-hub>`_
- `D-Link 7-Port USB 2.0 Hub DUB-H7 <https://www.dlink.com/en/products/dub-h7-7-port-usb-2-0-hub>`_
- `Trust HU-5770 7-Port Powered Hub <http://www.amazon.co.uk/TRUST-UK-HU-5770-PORT-POWERED/dp/B000HG5Q42>`_
.. tip::
......