summaryrefslogtreecommitdiff
path: root/src/drivers/Driver_1770_ff00.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/Driver_1770_ff00.java')
-rw-r--r--src/drivers/Driver_1770_ff00.java144
1 files changed, 144 insertions, 0 deletions
diff --git a/src/drivers/Driver_1770_ff00.java b/src/drivers/Driver_1770_ff00.java
new file mode 100644
index 0000000..9f849f9
--- /dev/null
+++ b/src/drivers/Driver_1770_ff00.java
@@ -0,0 +1,144 @@
+package org.manzerbredes.open_klm.drivers;
+
+import java.io.IOException;
+import java.util.HashMap;
+import org.javatuples.Pair;
+import com.codeminders.hidapi.*;
+
+
+/**
+ *
+ * Driver to communicate with the keyboard device
+ * using HIDAPI.
+ *
+ * @author Manzerbredes
+ *
+ */
+public class Driver_1770_ff00 implements Driver, DriverTypeA{
+
+
+
+ /**
+ * Device entry
+ */
+ HIDDevice device;
+
+ /**
+ * Define Keyboard color state
+ */
+ private HashMap<Region, Pair<Color,Intensity>> KeyboardColor=new HashMap<>();
+
+ /**
+ * Define Keyboard mode state
+ */
+ private Mode mode=Mode.NORMAL;
+
+
+ @Override
+ public boolean initDriver(){
+ // Init HIDAPI Library
+ com.codeminders.hidapi.ClassPathLibraryLoader.loadNativeHIDLibrary();
+
+ // Try not bind the device
+ try {
+ HIDManager man=HIDManager.getInstance();
+ this.device=man.openById(0x1770, 0xff00, null);
+ if(this.device!=null)
+ return true;
+ }
+ catch(Exception e){
+ System.err.println(e.getMessage());
+ }
+ return false;
+ }
+
+
+ /**
+ * Build a byte[] report
+ *
+ * @param a
+ * @param b
+ * @param c
+ * @param d
+ * @param e
+ * @param f
+ * @param g
+ * @param h
+ * @return
+ */
+ private byte[] getReport(int a, int b, int c, int d, int e, int f, int g, int h){
+ byte[] message = new byte[8];
+ message[0] = (byte) a;
+ message[1] = (byte) b;
+ message[2] = (byte) c;
+ message[3] = (byte) d;
+ message[4] = (byte) e;
+ message[5] = (byte) f;
+ message[6] = (byte) g;
+ message[7] = (byte) h;
+ return message;
+ }
+
+
+
+
+
+ /**
+ * Commit (apply current mode to update the color)
+ */
+ private void commit(){
+ try {
+ this.device.sendFeatureReport(this.getReport(1,2,65,this.mode.intValue(),0,0,0,236));
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+
+ @Override
+ public void setRegionColor(Region region, Color color, Intensity intensity) {
+ try {
+ this.device.sendFeatureReport(this.getReport(1,2,66,region.intValue(),color.intValue(),intensity.intValue(),0,236));
+ this.commit();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+
+ }
+
+
+ @Override
+ public void setColor(Color color, Intensity intensity) {
+ try {
+ this.device.sendFeatureReport(this.getReport(1,2,66,Region.LEFT.intValue(),color.intValue(),intensity.intValue(),0,236));
+ this.device.sendFeatureReport(this.getReport(1,2,66,Region.MIDDLE.intValue(),color.intValue(),intensity.intValue(),0,236));
+ this.device.sendFeatureReport(this.getReport(1,2,66,Region.RIGHT.intValue(),color.intValue(),intensity.intValue(),0,236));
+ this.commit();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+
+
+ @Override
+ public void setMode(Mode mode) {
+ this.mode=mode;
+ this.commit();
+ }
+
+
+ @Override
+ public Class<?> getType() {
+ return DriverTypeA.class;
+ }
+
+
+
+
+
+} \ No newline at end of file