Add driver modularity
This commit is contained in:
parent
91430fcc06
commit
6500028632
5 changed files with 256 additions and 200 deletions
|
@ -1,184 +0,0 @@
|
|||
package org.manzerbredes.open_klm.device;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import com.codeminders.hidapi.HIDDevice;
|
||||
import com.codeminders.hidapi.HIDManager;
|
||||
|
||||
/**
|
||||
*
|
||||
* Driver to communicate with the keyboard device
|
||||
* using HIDAPI.
|
||||
*
|
||||
* @author Manzerbredes
|
||||
*
|
||||
*/
|
||||
public class Driver{
|
||||
|
||||
/**
|
||||
* Defined Region Helper
|
||||
*
|
||||
* @author Manzerbredes
|
||||
*
|
||||
*/
|
||||
public enum Region{
|
||||
LEFT(1), MIDDLE(2), RIGHT(3);
|
||||
|
||||
private int current;
|
||||
|
||||
Region(int current){
|
||||
this.current=current;
|
||||
}
|
||||
|
||||
public int intValue(){
|
||||
return this.current;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined Color Helper
|
||||
*
|
||||
* @author Manzerbredes
|
||||
*
|
||||
*/
|
||||
public enum Color{
|
||||
OFF(0),RED(1),ORANGE(2),YELLOW(3),GREEN(4),SKY(5), BLUE(6),PURPLE(7),WHITE(8);
|
||||
|
||||
private int current;
|
||||
|
||||
Color(int current){
|
||||
this.current=current;
|
||||
}
|
||||
|
||||
public int intValue(){
|
||||
return this.current;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined Level Helper
|
||||
*
|
||||
* @author Manzerbredes
|
||||
*
|
||||
*/
|
||||
public enum Intensity{
|
||||
HIGH(0), MEDIUM(1), LOW(2), LIGHT(3);
|
||||
|
||||
private int current;
|
||||
|
||||
Intensity(int current){
|
||||
this.current=current;
|
||||
}
|
||||
|
||||
public int intValue(){
|
||||
return this.current;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined Mode Helper
|
||||
*
|
||||
* @author Manzerbredes
|
||||
*
|
||||
*/
|
||||
public enum Mode{
|
||||
NORMAL(1), GAMING(2), BREATHE(3), DEMO(4), WAVE(5);
|
||||
|
||||
private int current;
|
||||
|
||||
Mode(int current){
|
||||
this.current=current;
|
||||
}
|
||||
|
||||
public int intValue(){
|
||||
return this.current;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Device entry
|
||||
*/
|
||||
HIDDevice device;
|
||||
|
||||
|
||||
/**
|
||||
* Init driver and HIDAPI library
|
||||
*
|
||||
* @throws InstantiationException
|
||||
*/
|
||||
public Driver() throws InstantiationException{
|
||||
// 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)
|
||||
throw new Exception();
|
||||
}
|
||||
catch(Exception e){
|
||||
throw new InstantiationException("Failed to instanciate driver. Device not found or permission denied (try as root)");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set Color of region
|
||||
*
|
||||
* @param region Region to apply
|
||||
* @param color Color to apply
|
||||
* @param intensity Intensity wanted
|
||||
*/
|
||||
public void setColor(Region region, Color color, Intensity intensity){
|
||||
try {
|
||||
this.device.sendFeatureReport(this.getReport(1,2,66,region.intValue(),color.intValue(),intensity.intValue(),0,236));
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Commit change
|
||||
*
|
||||
* @param mode Mode wanted
|
||||
*/
|
||||
public void commit(Mode mode){
|
||||
try {
|
||||
this.device.sendFeatureReport(this.getReport(1,2,65,mode.intValue(),0,0,0,236));
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -10,15 +10,7 @@ import org.manzerbredes.open_klm.device.Driver.Region;
|
|||
|
||||
public class KeyboardState {
|
||||
|
||||
/**
|
||||
* Define Keyboard color state
|
||||
*/
|
||||
private HashMap<Region, Pair<Color,Intensity>> KeyboardColor=new HashMap<>();
|
||||
|
||||
/**
|
||||
* Define Keyboard mode state
|
||||
*/
|
||||
private Mode mode;
|
||||
|
||||
|
||||
|
||||
public KeyboardState() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue