From 284083101732921a4eab9857f7849374663fa1c0 Mon Sep 17 00:00:00 2001 From: David Given Date: Sat, 28 Sep 2024 17:03:59 +0200 Subject: [PATCH] Initial boilerplate for the Applesauce. --- lib/usb/applesauce.h | 6 ++++++ lib/usb/usb.cc | 9 +++++++++ lib/usb/usbfinder.cc | 6 +++++- lib/usb/usbfinder.h | 3 ++- 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 lib/usb/applesauce.h diff --git a/lib/usb/applesauce.h b/lib/usb/applesauce.h new file mode 100644 index 000000000..9c080075f --- /dev/null +++ b/lib/usb/applesauce.h @@ -0,0 +1,6 @@ +#pragma once + +#define APPLESAUCE_VID 0x16c0 +#define APPLESAUCE_PID 0x0483 + +#define APPLESAUCE_ID ((APPLESAUCE_VID << 16) | APPLESAUCE_PID) diff --git a/lib/usb/usb.cc b/lib/usb/usb.cc index a66547964..b79e880fc 100644 --- a/lib/usb/usb.cc +++ b/lib/usb/usb.cc @@ -9,6 +9,7 @@ #include "lib/proto.h" #include "usbfinder.h" #include "lib/logger.h" +#include "applesauce.h" #include "greaseweazle.h" static USB* usb = NULL; @@ -54,6 +55,11 @@ static std::shared_ptr selectDevice() std::cerr << fmt::format( "Greaseweazle: {} on {}\n", c->serial, c->serialPort); break; + + case APPLESAUCE_ID: + std::cerr << fmt::format( + "Applesauce: {} on {}\n", c->serial, c->serialPort); + break; } } exit(1); @@ -87,6 +93,9 @@ USB* get_usb_impl() return createGreaseweazleUsb( candidate->serialPort, globalConfig()->usb().greaseweazle()); + case APPLESAUCE_ID: + error("Applesauce not supported yet"); + default: error("internal"); } diff --git a/lib/usb/usbfinder.cc b/lib/usb/usbfinder.cc index d3a870033..20b546a37 100644 --- a/lib/usb/usbfinder.cc +++ b/lib/usb/usbfinder.cc @@ -3,12 +3,13 @@ #include "usb.h" #include "lib/bytes.h" #include "usbfinder.h" +#include "applesauce.h" #include "greaseweazle.h" #include "protocol.h" #include "libusbp.hpp" static const std::set VALID_DEVICES = { - GREASEWEAZLE_ID, FLUXENGINE_ID}; + GREASEWEAZLE_ID, FLUXENGINE_ID, APPLESAUCE_ID}; static const std::string get_serial_number(const libusbp::device& device) { @@ -71,6 +72,9 @@ std::string getDeviceName(DeviceType type) case DEVICE_FLUXENGINE: return "FluxEngine"; + case DEVICE_APPLESAUCE: + return "Applesauce"; + default: return "unknown"; } diff --git a/lib/usb/usbfinder.h b/lib/usb/usbfinder.h index 2034a7d81..435c7e3ba 100644 --- a/lib/usb/usbfinder.h +++ b/lib/usb/usbfinder.h @@ -7,7 +7,8 @@ enum DeviceType { DEVICE_FLUXENGINE, - DEVICE_GREASEWEAZLE + DEVICE_GREASEWEAZLE, + DEVICE_APPLESAUCE, }; extern std::string getDeviceName(DeviceType type);