From ac61cde5d2e1b0e7a80e2a88679cf247c0e4cec9 Mon Sep 17 00:00:00 2001 From: Jens True Date: Wed, 5 Jan 2022 09:25:53 +0000 Subject: [PATCH 1/7] Added LEDNotifier to list projects --- .gitignore | 1 + content/project/lednotifier/featured.jpg | Bin 0 -> 31671 bytes content/project/lednotifier/index.md | 44 +++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 content/project/lednotifier/featured.jpg create mode 100644 content/project/lednotifier/index.md diff --git a/.gitignore b/.gitignore index b925633..ea32925 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ public/ assets/jsconfig.json _vendor .hugo_build.lock +hugo \ No newline at end of file diff --git a/content/project/lednotifier/featured.jpg b/content/project/lednotifier/featured.jpg new file mode 100644 index 0000000000000000000000000000000000000000..71c38af0a4d202db364c0ff49dd62e0ff7a99d27 GIT binary patch literal 31671 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 Hf9L)$fEx-5 literal 0 HcmV?d00001 diff --git a/content/project/lednotifier/index.md b/content/project/lednotifier/index.md new file mode 100644 index 0000000..5778194 --- /dev/null +++ b/content/project/lednotifier/index.md @@ -0,0 +1,44 @@ +--- +title: "LED Notifier" +summary: "Commandline app to change the color of a USB LED notifier." +date: 2022-01-04T20:56:05+02:00 +categories: ["C#"] + +image: + preview_only: false + +url_code: "https://github.com/furyfire/LEDNotifier" +--- +# LED Notifier +Setting the color of a simple USB LED Notifier. Implemented in C# and .NET 6.0 + + +# Device +The device itself was purchased years ago from a chinese site. + + +| Field | Value | +|----------------|----------| +| Vendor ID | 0x1294 | +| Product ID | 0x1320 | +| Product Name | EMAIL | + +It enumerates as a USB HID device and supports a limited set of colors. + +- Off +- Blue +- Red +- Green +- Aqua +- Purple +- Yellow +- White + +# Implementation +I opted to use C# for a basic Windows implementation. + + - Using VS2022 + - To interface with the HID device I used the HIDSharp library. (https://www.zer7.com/software/hidsharp) + + + From 959d70c940de28dbffa292ef3bad68db59faa727 Mon Sep 17 00:00:00 2001 From: Jens True Date: Wed, 5 Jan 2022 10:15:58 +0000 Subject: [PATCH 2/7] Extra details --- content/project/lednotifier/index.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/content/project/lednotifier/index.md b/content/project/lednotifier/index.md index 5778194..cda83cd 100644 --- a/content/project/lednotifier/index.md +++ b/content/project/lednotifier/index.md @@ -12,16 +12,17 @@ url_code: "https://github.com/furyfire/LEDNotifier" # LED Notifier Setting the color of a simple USB LED Notifier. Implemented in C# and .NET 6.0 - # Device The device itself was purchased years ago from a chinese site. -| Field | Value | -|----------------|----------| -| Vendor ID | 0x1294 | -| Product ID | 0x1320 | -| Product Name | EMAIL | +| Field | Value | +|----------------|------------------| +| Vendor ID | 0x1294 | +| Product ID | 0x1320 | +| Product Name | EMAIL | +| Device Name | Webmail Notifier | +| Vendor | RISO KAGAKU CORP.| It enumerates as a USB HID device and supports a limited set of colors. @@ -40,5 +41,11 @@ I opted to use C# for a basic Windows implementation. - Using VS2022 - To interface with the HID device I used the HIDSharp library. (https://www.zer7.com/software/hidsharp) +Colors are not bit mapped and only values between 0x0 and 0x7 are supported. The first byte sent to the device does not appear to have any effect as is left as 0xFF. Drivers are not needed as this is a basic HID device. - +# TODO +- Basic pattern support (built from colors and durations) +- Decode the HID device description +- Better error handling +- Service/Daemon for background operation +- PWM (Low resolution considering the 1ms USB update frequency) From 984a595e10b54842759dd810a0a69df074b9a38c Mon Sep 17 00:00:00 2001 From: Jens True Date: Wed, 5 Jan 2022 10:43:27 +0000 Subject: [PATCH 3/7] G4 Tracking token --- config/_default/params.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/_default/params.yaml b/config/_default/params.yaml index 331f896..26fbd39 100644 --- a/config/_default/params.yaml +++ b/config/_default/params.yaml @@ -110,7 +110,7 @@ map: api_key: '' zoom: 8 marketing: - google_analytics: 'UA-125054774-1' + google_analytics: 'G-DT6T5YZL8Q' icon: pack: ai: true \ No newline at end of file From 66d489047b5816c4e9cc9044813ade44c4c69234 Mon Sep 17 00:00:00 2001 From: Jens True Date: Wed, 5 Jan 2022 10:51:27 +0000 Subject: [PATCH 4/7] New token --- config/_default/params.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/config/_default/params.yaml b/config/_default/params.yaml index 26fbd39..683b17e 100644 --- a/config/_default/params.yaml +++ b/config/_default/params.yaml @@ -110,7 +110,10 @@ map: api_key: '' zoom: 8 marketing: - google_analytics: 'G-DT6T5YZL8Q' + google_analytics: '' +marketing: + google_analytics: "G-WEMHRC35NR" + google_tag_manager: "" icon: pack: ai: true \ No newline at end of file From 81c8f12d531f436b82ae454152722a22b8c577c0 Mon Sep 17 00:00:00 2001 From: Jens True Date: Wed, 5 Jan 2022 10:51:51 +0000 Subject: [PATCH 5/7] New tag --- config/_default/params.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/config/_default/params.yaml b/config/_default/params.yaml index 683b17e..765ca27 100644 --- a/config/_default/params.yaml +++ b/config/_default/params.yaml @@ -109,11 +109,8 @@ map: provider: 'mapnik' api_key: '' zoom: 8 -marketing: - google_analytics: '' marketing: google_analytics: "G-WEMHRC35NR" - google_tag_manager: "" icon: pack: ai: true \ No newline at end of file From 836cf971be01edf1633aace8b85e4f65f3ce180f Mon Sep 17 00:00:00 2001 From: Jens True Date: Wed, 5 Jan 2022 10:57:06 +0000 Subject: [PATCH 6/7] Privacy pack for tracking --- config/_default/params.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/_default/params.yaml b/config/_default/params.yaml index 765ca27..71f2ba6 100644 --- a/config/_default/params.yaml +++ b/config/_default/params.yaml @@ -72,7 +72,7 @@ address_format: dk highlight: true math: false diagram: true -privacy_pack: false +privacy_pack: true show_related: book: true page: false From 342c4b5c094f2f297123b12faa59a2b3e9da38c4 Mon Sep 17 00:00:00 2001 From: Jens True Date: Wed, 5 Jan 2022 11:06:48 +0000 Subject: [PATCH 7/7] Cleanup tracking --- config/_default/params.yaml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/config/_default/params.yaml b/config/_default/params.yaml index 71f2ba6..d0b5832 100644 --- a/config/_default/params.yaml +++ b/config/_default/params.yaml @@ -1,14 +1,9 @@ -# SITE SETUP -# Guide: https://wowchemy.com/docs/getting-started/ -# Documentation: https://wowchemy.com/docs/ -# This file is formatted using YAML syntax - learn more at https://learnxinyminutes.com/docs/yaml/ - # Appearance theme: ocean day_night: false font: '' -font_size: L +font_size: M # SEO @@ -72,7 +67,7 @@ address_format: dk highlight: true math: false diagram: true -privacy_pack: true +privacy_pack: false show_related: book: true page: false @@ -109,8 +104,6 @@ map: provider: 'mapnik' api_key: '' zoom: 8 -marketing: - google_analytics: "G-WEMHRC35NR" icon: pack: ai: true \ No newline at end of file