From 3120783000d0025b183b0397acaa8b769499eb38 Mon Sep 17 00:00:00 2001 From: krolyxon Date: Mon, 8 Jun 2026 23:10:46 +0530 Subject: Initial gh-pages firmware hosting --- .../examples/apduToBlackBerry/.esp32.test.skip | 0 .../apduToBlackBerry/BlackBerry7/.classpath | 7 + .../examples/apduToBlackBerry/BlackBerry7/.project | 29 ++++ .../.settings/org.eclipse.jdt.core.prefs | 12 ++ .../BlackBerry7/BlackBerry_App_Descriptor.xml | 40 +++++ .../apduToBlackBerry/BlackBerry7/build.xml | 35 +++++ .../BlackBerry7/src/mypackage/ColorMixer.java | 152 +++++++++++++++++++ .../BlackBerry7/src/mypackage/MyApp.java | 47 ++++++ .../BlackBerry7/src/mypackage/MyScreen.java | 163 +++++++++++++++++++++ .../examples/apduToBlackBerry/apduToBlackBerry.ino | 148 +++++++++++++++++++ 10 files changed, 633 insertions(+) create mode 100644 .pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/.esp32.test.skip create mode 100644 .pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/.classpath create mode 100644 .pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/.project create mode 100644 .pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/.settings/org.eclipse.jdt.core.prefs create mode 100644 .pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/BlackBerry_App_Descriptor.xml create mode 100644 .pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/build.xml create mode 100644 .pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/ColorMixer.java create mode 100644 .pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/MyApp.java create mode 100644 .pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/MyScreen.java create mode 100644 .pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/apduToBlackBerry.ino (limited to '.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry') diff --git a/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/.esp32.test.skip b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/.esp32.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/.classpath b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/.classpath new file mode 100644 index 0000000..4426948 --- /dev/null +++ b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/.project b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/.project new file mode 100644 index 0000000..1a8239a --- /dev/null +++ b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/.project @@ -0,0 +1,29 @@ + + + TargetEmulation + + + + + + net.rim.ejde.internal.builder.BlackBerryPreprocessBuilder + + + + + net.rim.ejde.internal.builder.BlackBerryResourcesBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + + net.rim.ejde.BlackBerryPreProcessNature + net.rim.ejde.BlackBerryProjectCoreNature + org.eclipse.jdt.core.javanature + + diff --git a/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/.settings/org.eclipse.jdt.core.prefs b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..3f59a3e --- /dev/null +++ b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Fri Jun 22 00:02:13 EDT 2012 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.4 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore +org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore +org.eclipse.jdt.core.compiler.source=1.3 diff --git a/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/BlackBerry_App_Descriptor.xml b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/BlackBerry_App_Descriptor.xml new file mode 100644 index 0000000..aa610d2 --- /dev/null +++ b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/BlackBerry_App_Descriptor.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/build.xml b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/build.xml new file mode 100644 index 0000000..72bf0c3 --- /dev/null +++ b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/build.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + diff --git a/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/ColorMixer.java b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/ColorMixer.java new file mode 100644 index 0000000..d81f802 --- /dev/null +++ b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/ColorMixer.java @@ -0,0 +1,152 @@ +/** + Copyright (c) 2011, 2012, 2013 Research In Motion Limited. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +**/ +package mypackage; + +import net.rim.device.api.ui.Field; +import net.rim.device.api.ui.Graphics; +import net.rim.device.api.ui.TouchEvent; + +public class ColorMixer extends Field { + private static final int[] colors = new int[] { 0xff0000, 0xff00, 0xff }; + private int barGap = 5; + + private int barHeight = 64; + private int color; + private MyScreen owner; + + private double r, g, b; + + public ColorMixer(MyScreen owner) { + this.owner = owner; + } + + protected void layout(int width, int height) { + setExtent(640, barHeight * 3 + barGap * 2); + } + + protected void paint(Graphics graphics) { + int barWidth = getWidth() - barHeight * 3 - barGap * 3; + double[] values = new double[] { r, g, b }; + + // Draw color sliders + for (int i = 0; i < 3; ++i) { + int top = i * (barHeight + barGap); + int toDraw = (int) (values[i] * barWidth + 0.5); + graphics.setColor(0); + graphics.fillRect(toDraw, top, barWidth - toDraw, barHeight); + + graphics.setColor(colors[i]); + graphics.fillRect(0, top, toDraw, barHeight); + + graphics.setColor(0x7f7f7f); + graphics.drawRect(0, top, barWidth, barHeight); + } + + // Draw mixed down color + int boxWidth = barHeight * 3 + barGap * 2; + graphics.setColor(color); + graphics.fillRect(getWidth() - 1 - boxWidth, 0, boxWidth, boxWidth); + + graphics.setColor(0x7f7f7f); + graphics.drawRect(getWidth() - 1 - boxWidth, 0, boxWidth, boxWidth); + } + + public void setColor(int color) { + if (color != this.color) { + this.color = color; + r = ((color >> 16) & 0xff) / 255.0; + g = ((color >> 8) & 0xff) / 255.0; + b = (color & 0xff) / 255.0; + invalidate(); + } + } + + private void setPart(int which, double value) { + double source = which == 0 ? r : which == 1 ? g : b; + if (value == source) { + return; + } + int bv = (int) (value * 255 + 0.5); + bv &= 0xff; + if (which == 0) { + r = value; + color &= 0xffff; + color |= bv << 16; + } else if (which == 1) { + g = value; + color &= 0xff00ff; + color |= bv << 8; + } else { + b = value; + color &= 0xffff00; + color |= bv; + } + owner.setColor(color); + invalidate(); + } + + private int touchTarget = -1; + + protected boolean touchEvent(TouchEvent message) { + int event = message.getEvent(); + + int x = message.getX(1); + int y = message.getY(1); + + int barWidth = getWidth() - barHeight * 3 - barGap * 3; + + if (event == TouchEvent.UP) { + touchTarget = -1; + return false; + } else if (event == TouchEvent.DOWN) { + if (y < -5 || y > getWidth() + 5) { + return false; + } + + if (x <= barWidth) { + for (int i = 0; i < 3; ++i) { + if (y < 0) { + break; + } + if (y < barHeight) { + touchTarget = i; + break; + } + y -= barHeight; + y -= barGap; + } + } else { + return false; + } + } + + if (touchTarget == -1) { + return false; + } + + double newValue = 1.0 * x / barWidth; + if (newValue < 0) { + newValue = 0; + } + if (newValue > 1) { + newValue = 1; + } + + setPart(touchTarget, newValue); + + return true; + } +} diff --git a/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/MyApp.java b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/MyApp.java new file mode 100644 index 0000000..4da1da5 --- /dev/null +++ b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/MyApp.java @@ -0,0 +1,47 @@ +/** + Copyright (c) 2011, 2012, 2013 Research In Motion Limited. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +**/ +package mypackage; + +import net.rim.device.api.ui.UiApplication; + +/** + * This class extends the UiApplication class, providing a + * graphical user interface. + */ +public class MyApp extends UiApplication +{ + /** + * Entry point for application + * @param args Command line arguments (not used) + */ + public static void main(String[] args) + { + // Create a new instance of the application and make the currently + // running thread the application's event dispatch thread. + MyApp theApp = new MyApp(); + theApp.enterEventDispatcher(); + } + + + /** + * Creates a new MyApp object + */ + public MyApp() + { + // Push a screen onto the UI stack for rendering. + pushScreen(new MyScreen()); + } +} diff --git a/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/MyScreen.java b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/MyScreen.java new file mode 100644 index 0000000..0f80667 --- /dev/null +++ b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/MyScreen.java @@ -0,0 +1,163 @@ +/** + Copyright (c) 2011, 2012, 2013 Research In Motion Limited. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +**/ +package mypackage; + +import net.rim.device.api.io.nfc.NFCException; +import net.rim.device.api.io.nfc.emulation.VirtualISO14443Part4TargetCallback; +import net.rim.device.api.io.nfc.emulation.VirtualISO14443Part4TypeATarget; +import net.rim.device.api.ui.Field; +import net.rim.device.api.ui.FieldChangeListener; +import net.rim.device.api.ui.component.CheckboxField; +import net.rim.device.api.ui.component.LabelField; +import net.rim.device.api.ui.container.MainScreen; +import net.rim.device.api.ui.decor.BackgroundFactory; + +/** + * A class extending the MainScreen class, which provides default standard + * behavior for BlackBerry GUI applications. + */ +public final class MyScreen extends MainScreen implements + VirtualISO14443Part4TargetCallback, FieldChangeListener { + + private int color = 0x7f7f7f; + + private boolean colorQueued = false; + private CheckboxField colorQueueLocked; + private VirtualISO14443Part4TypeATarget emulated; + private ColorMixer mixer; + + private LabelField status; + + /** + * Creates a new MyScreen object + */ + public MyScreen() { + // Set the displayed title of the screen + setTitle("Colour Control Setter"); + setBackground(BackgroundFactory.createSolidBackground(0x3f3f3f)); + + add(new LabelField("")); + add(colorQueueLocked = new CheckboxField("Lock Color", false)); + colorQueueLocked.setChangeListener(this); + + add(mixer = new ColorMixer(this)); + mixer.setColor(0x7f7f7f); + + add(status = new LabelField("")); + + try { + emulated = new VirtualISO14443Part4TypeATarget(this, "10451045", + null); + log("created"); + emulated.startEmulation(); + log("emulating"); + } catch (NFCException e) { + log("Failed to listen"); + status.setText(e.getClass().getName() + " " + e.getMessage()); + e.printStackTrace(); + } + } + + // private TextField textField; + + public void fieldChanged(Field field, int context) { + if (colorQueueLocked.getChecked()) { + setColor(color); + } else { + colorQueued = false; + status.setText(""); + } + } + + private boolean isColorQueueLocked() { + return colorQueueLocked.getChecked(); + } + + protected void log(String message) { + System.out.println("SUPERDUPER: " + message); + // textField.setText(textField.getText() + "\n" + message); + } + + public void onVirtualTargetEvent(int targetEvent) { + log("Target event: " + targetEvent); + } + + public byte[] processCommand(byte[] command) { + byte[] toReturn = processCommandInternal(command); + String message = "[" + toString(command) + "," + toString(toReturn) + + "]"; + // status.setText(message); + // log(message); + return toReturn; + } + + private byte[] processCommandInternal(byte[] command) { + if (command == null) { + return new byte[0]; + } + int messageType = command[0] & 0xff; + switch (messageType) { + case 1: + if (command.length == 4) { + int colorIn = (command[1] & 0xff) << 16; + colorIn |= (command[2] & 0xff) << 8; + colorIn |= (command[3] & 0xff); + + if (colorIn != color) { + if (colorQueued) { + + byte[] toReturn = new byte[4]; + toReturn[0] = 1; + toReturn[1] = (byte) (color >> 16); + toReturn[2] = (byte) (color >> 8); + toReturn[3] = (byte) color; + + if (!isColorQueueLocked()) { + colorQueued = false; + status.setText(""); + } + + return toReturn; + } else { + this.color = colorIn; + mixer.setColor(colorIn); + } + } + } + break; + } + return new byte[] { 0 }; + } + + public void setColor(int color) { + colorQueued = true; + this.color = color; + status.setText("#" + toHex(color)); + } + + private String toHex(int i) { + String toReturn = "000000" + Integer.toString(i, 16); + return toReturn.substring(toReturn.length() - 6); + } + + private String toString(byte[] command) { + String toReturn = ""; + for (int i = 0; i < command.length; ++i) { + toReturn += Integer.toString(command[i] & 0xff, 16) + " "; + } + return toReturn; + } +} diff --git a/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/apduToBlackBerry.ino b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/apduToBlackBerry.ino new file mode 100644 index 0000000..0b5269a --- /dev/null +++ b/.pio/libdeps/esp32-s3-n16r8/Adafruit PN532/examples/apduToBlackBerry/apduToBlackBerry.ino @@ -0,0 +1,148 @@ +/** + Copyright (c) 2011, 2012, 2013 Research In Motion Limited. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +**/ +#include +#include +#include + +// If using the breakout with SPI, define the pins for SPI communication. +#define PN532_SCK (2) +#define PN532_MOSI (3) +#define PN532_SS (4) +#define PN532_MISO (5) + +// If using the breakout or shield with I2C, define just the pins connected +// to the IRQ and reset lines. Use the values below (2, 3) for the shield! +#define PN532_IRQ (2) +#define PN532_RESET (3) // Not connected by default on the NFC Shield + +// Uncomment just _one_ line below depending on how your breakout or shield +// is connected to the Arduino: + +// Use this line for a breakout with a SPI connection: +Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS); + +// Use this line for a breakout with a hardware SPI connection. Note that +// the PN532 SCK, MOSI, and MISO pins need to be connected to the Arduino's +// hardware SPI SCK, MOSI, and MISO pins. On an Arduino Uno these are +// SCK = 13, MOSI = 11, MISO = 12. The SS line can be any digital IO pin. +//Adafruit_PN532 nfc(PN532_SS); + +// Or use this line for a breakout or shield with an I2C connection: +//Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET); + +// PWM LED will be on the following PINs. +#define R_PIN (9) +#define G_PIN (10) +#define B_PIN (11) + +// Initial values of RGB. +uint8_t r = 0x00; +uint8_t g = 0x00; +uint8_t b = 0x7f; + +/** + * Write the current color to the output pins. + */ +void showColor() { + analogWrite(R_PIN,r); + analogWrite(G_PIN,g); + analogWrite(B_PIN,b); +} + + +void setup() { + Serial.begin(115200); + while (!Serial) delay(10); // for Leonardo/Micro/Zero + + pinMode(R_PIN,OUTPUT); + pinMode(G_PIN,OUTPUT); + pinMode(B_PIN,OUTPUT); + showColor(); + + nfc.begin(); + + uint32_t versiondata = nfc.getFirmwareVersion(); + if (! versiondata) { + Serial.println("Did not find the shield - locking up"); + while (true) { + } + } + + Serial.print("Found chip PN5"); + Serial.println((versiondata>>24) & 0xFF, HEX); + Serial.print("Firmware ver. "); + Serial.print((versiondata>>16) & 0xFF, DEC); + Serial.print('.'); + Serial.println((versiondata>>8) & 0xFF, DEC); + + nfc.begin(); +} + +uint8_t message[4]; + +void loop(void) { + uint8_t i; + + // Serial.println("Listening..."); + if (nfc.inListPassiveTarget()) { + // Serial.println("Something's there..."); + while(true) { + message[0] = 1; + message[1] = r; + message[2] = g; + message[3] = b; + uint8_t responseLength = sizeof(message); + if (nfc.inDataExchange(message,sizeof(message),message,&responseLength)) { + uint8_t command = message[0]; + switch(command) { + case 0: + // NOP + break; + case 1: + if (responseLength==4) { + r = message[1]; + g = message[2]; + b = message[3]; + showColor(); + //Serial.print("Read a color: "); + //for (i=0; i<3; ++i) { + // Serial.print(message[i+1],HEX); + // Serial.print(' '); + //} + //Serial.println(); + } + else { + //Serial.println("Doesn't seem to be a color..."); + } + break; + default: + //Serial.print("Unknown command "); + //Serial.println(message[0]); + ; + } + delay(10); + } + else { + //Serial.println("It's gone..."); + break; + } + } + } + else { + //Serial.print("Trying again..."); + } +} + -- cgit v1.2.3