Compare commits
19 commits
main
...
xiao-break
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
275f2ad231 | ||
|
|
a7e86c6dce | ||
|
|
95dde05983 | ||
|
|
e73b76b2a0 | ||
|
|
bd4a8334e9 | ||
|
|
bdf646a292 | ||
|
|
53ebefa372 | ||
|
|
260ebb9a14 | ||
|
|
4f6db35af4 | ||
|
|
2132f4a147 | ||
|
|
3846da32fa | ||
|
|
7c5981a777 | ||
|
|
efae5642f9 | ||
|
|
c1654bcc1f | ||
|
|
0922619d01 | ||
|
|
20e5f03159 | ||
|
|
ff70194baf | ||
|
|
e49aea4b39 | ||
|
|
a27837fb65 |
12 changed files with 8543 additions and 8434 deletions
4
.github/workflows/daily-update.yml
vendored
4
.github/workflows/daily-update.yml
vendored
|
|
@ -42,9 +42,9 @@ jobs:
|
|||
git submodule init
|
||||
git submodule update --recursive
|
||||
cd Wippersnapper_Boards
|
||||
git reset --hard origin/rp2040_datalogger_feather
|
||||
git reset --hard origin/offline-mode
|
||||
cd ../Wippersnapper_Components
|
||||
git reset --hard origin/main
|
||||
git reset --hard origin/offline-mode
|
||||
cd ..
|
||||
git add Wippersnapper_Boards Wippersnapper_Components
|
||||
git diff --staged --quiet || git commit -m "Update submodules to latest versions [skip ci]"
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 66d399578444320a039514f1a41160a0c2357212
|
||||
Subproject commit 07c6667a1d21e1b2561db2a73d8da23f04504546
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 1f7823e15ee49acffb15aab2cc947ea7d1ad6619
|
||||
Subproject commit 624d42bd75cfdbdf39e728ac7cdf9612c7ee4503
|
||||
|
|
@ -268,12 +268,12 @@ def convert_components_to_json():
|
|||
|
||||
# Write the consolidated JSON file
|
||||
with open(OUTPUT_FILE, 'w') as f:
|
||||
json.dump({"components": components}, f, indent=2)
|
||||
|
||||
json.dump({"components": components}, f, ensure_ascii=False, indent=2)
|
||||
|
||||
# Write the consolidated JS file
|
||||
with open(OUTPUT_FILE.replace('.json', '.js'), 'w') as f:
|
||||
f.write("window.jsonComponentsObject = ")
|
||||
json.dump({"components": components}, f, indent=2)
|
||||
json.dump({"components": components}, f, ensure_ascii=False, indent=2)
|
||||
f.write(";\n")
|
||||
|
||||
print(f"Successfully created {OUTPUT_FILE}")
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Auto-generated on 2025-08-11 00:22:56
|
||||
// Auto-generated on 2025-08-11 14:04:12
|
||||
const FIRMWARE_DATA = {
|
||||
"releaseInfo": {
|
||||
"version": "1.0.0-offline-beta.3",
|
||||
|
|
|
|||
|
|
@ -314,7 +314,8 @@
|
|||
<option value="microsd-bff">Adafruit microSD Card BFF Add-On for QT Py and Xiao</option>
|
||||
<option value="winc1500-shield">Adafruit WINC1500 WiFi Shield</option>
|
||||
<option value="airlift-shield">Adafruit AirLift Shield - ESP32 WiFi Co-Processor</option>
|
||||
|
||||
<option value="seeed-xiao-s3sense-camera-addon">Seeed Studio XIAO ESP32S3 Sense Camera/SD Add-on board</option>
|
||||
<option value="seeed-xiao-ssd1306-expansion-base">Seeed Studio XIAO Expansion base board</option>
|
||||
</select>
|
||||
|
||||
<div id="companion-details" class="hidden">
|
||||
|
|
@ -358,6 +359,7 @@
|
|||
<select id="rtc-select">
|
||||
<option value="soft">Software RTC</option>
|
||||
<option value="PCF8523">PCF8523</option>
|
||||
<option value="PCF8563">PCF8563</option>
|
||||
<option value="DS3231">DS3231</option>
|
||||
<option value="DS1307">DS1307</option>
|
||||
</select>
|
||||
|
|
@ -508,7 +510,7 @@
|
|||
<div id="generate-section" class="section hidden">
|
||||
<h2>7. Generate Configuration</h2>
|
||||
<button id="generate-config-btn">Generate Configuration</button>
|
||||
<input type="checkbox" id="use-auto-init" onchange="javascript:appState.enableautoConfig=this.checked;"> <label for="use-auto-init" title="Auto config fallback for I2C sensors that fail to initialise (selects alternative sensors at same address)">Use Auto Init fallback</label>
|
||||
<input type="checkbox" id="use-auto-init" onchange="javascript:appState.enableautoConfig=this.checked;"> <label for="use-auto-init" title="Auto config fallback for I2C sensors that fail to initialise (selects alternative sensors at same address)">Use Auto Init fallback for failed or unspecified components (default)</label>
|
||||
<div id="config-output-container" class="hidden">
|
||||
<h3>Configuration JSON:</h3>
|
||||
<pre id="config-output" class="config-output"></pre>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
// Load Wippersnapper boards and components data
|
||||
|
||||
// Configuration - technically unused (instead ./ relative links) but useful for reference
|
||||
const BOARDS_JSON_URL = 'https://raw.githubusercontent.com/adafruit/Adafruit_Wippersnapper_Offline_Configurator/refs/heads/use_boards_sd_card/wippersnapper_boards.json'; //'wippersnapper_boards.json';
|
||||
const COMPONENTS_JSON_URL = 'https://raw.githubusercontent.com/adafruit/Adafruit_Wippersnapper_Offline_Configurator/refs/heads/use_boards_sd_card/wippersnapper_components.json'; //'wippersnapper_components.json';
|
||||
const BOARDS_JSON_URL = 'https://raw.githubusercontent.com/adafruit/Adafruit_Wippersnapper_Offline_Configurator/refs/heads/offline-mode/wippersnapper_boards.json'; //'wippersnapper_boards.json';
|
||||
const COMPONENTS_JSON_URL = 'https://raw.githubusercontent.com/adafruit/Adafruit_Wippersnapper_Offline_Configurator/refs/heads/offline-mode/wippersnapper_components.json'; //'wippersnapper_components.json';
|
||||
|
||||
// Global app state
|
||||
const appState = {
|
||||
|
|
@ -159,7 +159,7 @@ function populateBoardSelect() {
|
|||
|
||||
// Filter boards to only include those with UF2 install method
|
||||
const filteredBoards = Object.entries(appState.boardsData)
|
||||
.filter(([boardId, board]) => board.installMethod === 'uf2'); //['uf2', 'web-native-usb'].includes(board.installMethod)); //funhouse
|
||||
.filter(([boardId, board]) => ['uf2', 'web-native-usb'].includes(board.installMethod)); //funhouse
|
||||
|
||||
// Sort boards by vendor and name
|
||||
const sortedBoards = filteredBoards
|
||||
|
|
|
|||
|
|
@ -126,6 +126,22 @@ const companionBoardConfigs = {
|
|||
productURL: 'https://www.adafruit.com/product/4285',
|
||||
documentationURL: 'https://learn.adafruit.com/adafruit-airlift-shield-esp32-wifi-co-processor',
|
||||
image: 'https://cdn-shop.adafruit.com/640x480/4285-05.jpg'
|
||||
},
|
||||
'seeed-xiao-s3sense-camera-addon': {
|
||||
rtc: null,
|
||||
sdCardCS: 21,
|
||||
extras: 'SD Card, Camera, Microphone, Extra GPIOs D11+D12',
|
||||
productURL: 'https://www.seeedstudio.com/XIAO-ESP32S3-Sense-p-5639.html',
|
||||
documentationURL: 'https://wiki.seeedstudio.com/xiao_esp32s3_getting_started/',
|
||||
image: 'https://files.seeedstudio.com/wiki/SeeedStudio-XIAO-ESP32S3/img/66.jpg'
|
||||
},
|
||||
'seeed-xiao-ssd1306-expansion-base': {
|
||||
rtc: 'PCF8563',
|
||||
sdCardCS: 'D2',
|
||||
extras: 'SD Card, Display, Piezo Speaker, LiPo connector',
|
||||
productURL: 'https://www.seeedstudio.com/Seeeduino-XIAO-Expansion-board-p-4746.html',
|
||||
documentationURL: 'https://wiki.seeedstudio.com/Seeeduino-XIAO-Expansion-Board/',
|
||||
image: 'https://files.seeedstudio.com/wiki/Seeeduino-XIAO-Expansion-Board/Update_pic/zheng1.jpg'
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -249,7 +265,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||
if (boardImageElem) {
|
||||
if (board.image) {
|
||||
if (!board.image.startsWith('http')) {
|
||||
boardImageElem.src = "https://raw.githubusercontent.com/adafruit/Wippersnapper_Boards/refs/heads/rp2040_datalogger_feather/" + board.image;
|
||||
boardImageElem.src = "https://raw.githubusercontent.com/adafruit/Wippersnapper_Boards/refs/heads/offline-mode/" + board.image;
|
||||
} else {
|
||||
boardImageElem.src = board.image;
|
||||
}
|
||||
|
|
@ -365,7 +381,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||
// Mark SD CS pin as used
|
||||
appState.usedPins.add(pin.number);
|
||||
} else {
|
||||
console.warn(`SD card CS pin ${companion.sdCardCS} not found in selected board pins.`);
|
||||
console.warn(`[${companionId}] SD card CS pin ${companion.sdCardCS} not found in selected board pins.`);
|
||||
document.getElementById('sd-missing').classList.remove('hidden');
|
||||
document.getElementById('sd-present').classList.add('hidden');
|
||||
}
|
||||
|
|
@ -437,8 +453,12 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||
document.getElementById('sd-card-pin-select').classList.remove('hidden');
|
||||
} else {
|
||||
document.getElementById('sd-card-pin-select').classList.add('hidden');
|
||||
appState.usedPins.delete(appState.sdCardCS);
|
||||
document.getElementById('manual-sd-cs-pin').textContent = '';
|
||||
document.getElementById('sd-cs-pin').textContent = '';
|
||||
appState.sdCardCS = null;
|
||||
}
|
||||
populatePinsLists();
|
||||
});
|
||||
|
||||
// RTC type selection handler
|
||||
|
|
@ -1932,7 +1952,8 @@ function generateConfiguration() {
|
|||
referenceVoltage: appState.selectedBoard.referenceVoltage,
|
||||
totalGPIOPins: appState.selectedBoard.totalGPIOPins,
|
||||
totalAnalogPins: appState.selectedBoard.totalAnalogPins,
|
||||
statusLEDBrightness: appState.statusLEDBrightness
|
||||
statusLEDBrightness: appState.statusLEDBrightness,
|
||||
autoConfig: appState.enableautoConfig
|
||||
},
|
||||
components: []
|
||||
};
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue