diff --git a/Cargo.lock b/Cargo.lock
index 50a4c9f4..c1fca899 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1647,6 +1647,7 @@ dependencies = [
"smart-leds",
"usb-device",
"usbd-hid",
+ "usbd-picotool-reset",
"usbd-serial",
"ws2812-pio",
]
@@ -2362,6 +2363,15 @@ dependencies = [
"usbd-hid-descriptors",
]
+[[package]]
+name = "usbd-picotool-reset"
+version = "0.3.0"
+source = "git+https://github.com/JohnAZoidberg/usbd-picotool-reset?branch=rp-2040-hal-0.8#46cbb075a39031cd0fb8c4539aa9ed20dabff76d"
+dependencies = [
+ "rp2040-hal",
+ "usb-device",
+]
+
[[package]]
name = "usbd-serial"
version = "0.1.1"
diff --git a/Cargo.toml b/Cargo.toml
index a8e11c48..8fbc51e7 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -35,6 +35,9 @@ usb-device = "0.2.9"
heapless = "0.7.16"
usbd-serial = "0.1.1"
usbd-hid = "0.6.1"
+# Can't use right now, depends on embedded-hal 1.0.0
+# usbd-picotool-reset = "0.3.0"
+usbd-picotool-reset = { git = "https://github.com/JohnAZoidberg/usbd-picotool-reset", branch = "rp-2040-hal-0.8" }
fugit = "0.3.7"
# LED Matrix
is31fl3741 = "0.3.0"
diff --git a/fwupd/.gitignore b/fwupd/.gitignore
new file mode 100644
index 00000000..c2498874
--- /dev/null
+++ b/fwupd/.gitignore
@@ -0,0 +1 @@
+*.cab
diff --git a/fwupd/Makefile b/fwupd/Makefile
new file mode 100644
index 00000000..dfc882d4
--- /dev/null
+++ b/fwupd/Makefile
@@ -0,0 +1,3 @@
+qtpy.cab: firmware.metainfo.xml
+ cp ../target/thumbv6m-none-eabi/release/qtpy.uf2 .
+ gcab -c -v $@ qtpy.uf2 firmware.metainfo.xml
diff --git a/fwupd/firmware.metainfo.xml b/fwupd/firmware.metainfo.xml
new file mode 100644
index 00000000..c511a7ca
--- /dev/null
+++ b/fwupd/firmware.metainfo.xml
@@ -0,0 +1,43 @@
+
+
+ work.frame.inputmodule.qtpy
+ Framework QT Py
+ Firmware for the Framework QT Py
+
+
+ Updating the firmware on your Framework QT Py improves performance and
+ adds new features.
+
+
+
+
+ 5a5b58d0-9cb4-5f8b-a449-e7b7c820b0cb
+
+ https://github.com/FrameworkComputer/inputmodule-rs
+ CC0-1.0
+ proprietary
+
+ X-Device
+
+
+
+
+
+ New firmware!
+
+
+
+ {{ min_ver }}
+ org.freedesktop.fwupd
+
+
+
+ com.microsoft.uf2
+
+
+
diff --git a/qtpy/Cargo.toml b/qtpy/Cargo.toml
index 39e128f9..412b5e61 100644
--- a/qtpy/Cargo.toml
+++ b/qtpy/Cargo.toml
@@ -23,6 +23,7 @@ usb-device.workspace = true
heapless.workspace = true
usbd-serial.workspace = true
usbd-hid.workspace = true
+usbd-picotool-reset.workspace = true
fugit.workspace = true
# C1 Minimal
diff --git a/qtpy/src/main.rs b/qtpy/src/main.rs
index 1ba7cd1a..b659da22 100644
--- a/qtpy/src/main.rs
+++ b/qtpy/src/main.rs
@@ -34,11 +34,13 @@ use bsp::hal::{
};
// USB Device support
-use usb_device::{class_prelude::*, prelude::*};
+use usb_device::{class_prelude::*, prelude::*, descriptor::lang_id};
// USB Communications Class Device support
use usbd_serial::{SerialPort, USB_CLASS_CDC};
+use usbd_picotool_reset::PicoToolReset;
+
// Used to demonstrate writing formatted strings
// use core::fmt::Write;
// use heapless::String;
@@ -95,10 +97,16 @@ fn main() -> ! {
&mut pac.RESETS,
));
+ let mut picotool: PicoToolReset<_> = PicoToolReset::new(&usb_bus);
+
// Set up the USB Communications Class Device driver
let mut serial = SerialPort::new(&usb_bus);
let mut usb_dev = UsbDeviceBuilder::new(&usb_bus, UsbVidPid(FRAMEWORK_VID, COMMUNITY_PID))
+ //.strings(&[StringDescriptors::new(lang_id::ENGLISH_US)
+ // .manufacturer("Adafruit")
+ // .product("QT PY - Framework 16 Inputmodule FW")])
+ //.expect("Failed to set strings")
.manufacturer("Adafruit")
.product("QT PY - Framework 16 Inputmodule FW")
.max_power(500)
@@ -141,7 +149,8 @@ fn main() -> ! {
}
// Check for new data
- if usb_dev.poll(&mut [&mut serial]) {
+ // usb_dev.poll(&mut [&mut picotool, &mut serial]);
+ if usb_dev.poll(&mut [&mut picotool, &mut serial]) {
let mut buf = [0u8; 64];
match serial.read(&mut buf) {
Err(_e) => {
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
index 460b3c4b..264c9503 100644
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,4 +1,6 @@
[toolchain]
+# Needed for embeded-hal 1.0.0
+# channel = "1.75.0"
channel = "1.74.0"
targets = ["thumbv6m-none-eabi"]
components = ["clippy", "rustfmt"]
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy