auto-sync
This commit is contained in:
parent
43c2f68ebf
commit
2d8ed8cce2
|
@ -0,0 +1,15 @@
|
||||||
|
package com.rusefi.binaryprotocol;
|
||||||
|
|
||||||
|
import java.util.zip.CRC32;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (c) Andrey Belomutskiy
|
||||||
|
* 3/6/2015
|
||||||
|
*/
|
||||||
|
public class CRC {
|
||||||
|
public static int crc32(byte buf[], int size) {
|
||||||
|
CRC32 c = new CRC32();
|
||||||
|
c.update(buf, 0, size);
|
||||||
|
return (int) c.getValue();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.rusefi.binaryprotocol.test;
|
||||||
|
|
||||||
|
import com.rusefi.binaryprotocol.CRC;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (c) Andrey Belomutskiy
|
||||||
|
* 3/6/2015
|
||||||
|
*/
|
||||||
|
public class CRCTest {
|
||||||
|
@Test
|
||||||
|
public void testCrc() {
|
||||||
|
{
|
||||||
|
byte[] a = {'A'};
|
||||||
|
assertEquals(0xD3D99E8B, CRC.crc32(a, a.length));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
byte[] a = {'S'};
|
||||||
|
assertEquals(0x2060EFC3, CRC.crc32(a, a.length));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,5 +5,5 @@ package com.rusefi.io;
|
||||||
* 3/3/14
|
* 3/3/14
|
||||||
*/
|
*/
|
||||||
public interface DataListener {
|
public interface DataListener {
|
||||||
void onStringArrived(String string);
|
void onDataArrived(byte freshData[]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,10 +49,7 @@ public class PortHolder {
|
||||||
boolean opened = serialPort.openPort();//Open serial port
|
boolean opened = serialPort.openPort();//Open serial port
|
||||||
if (!opened)
|
if (!opened)
|
||||||
FileLog.MAIN.logLine("not opened!");
|
FileLog.MAIN.logLine("not opened!");
|
||||||
serialPort.setParams(BAUD_RATE, 8, 1, 0);//Set params.
|
setupPort(serialPort);
|
||||||
int mask = SerialPort.MASK_RXCHAR;
|
|
||||||
//Set the prepared mask
|
|
||||||
serialPort.setEventsMask(mask);
|
|
||||||
serialPort.addEventListener(new SerialPortReader(serialPort, listener));
|
serialPort.addEventListener(new SerialPortReader(serialPort, listener));
|
||||||
} catch (SerialPortException e) {
|
} catch (SerialPortException e) {
|
||||||
FileLog.rlog("ERROR " + e.getMessage());
|
FileLog.rlog("ERROR " + e.getMessage());
|
||||||
|
@ -84,6 +81,13 @@ public class PortHolder {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setupPort(SerialPort serialPort) throws SerialPortException {
|
||||||
|
serialPort.setParams(BAUD_RATE, 8, 1, 0);//Set params.
|
||||||
|
int mask = SerialPort.MASK_RXCHAR;
|
||||||
|
//Set the prepared mask
|
||||||
|
serialPort.setEventsMask(mask);
|
||||||
|
}
|
||||||
|
|
||||||
public void close() {
|
public void close() {
|
||||||
synchronized (portLock) {
|
synchronized (portLock) {
|
||||||
if (serialPort != null) {
|
if (serialPort != null) {
|
||||||
|
|
|
@ -12,12 +12,12 @@ import com.rusefi.io.LinkManager;
|
||||||
class SerialManager {
|
class SerialManager {
|
||||||
public static String port;
|
public static String port;
|
||||||
|
|
||||||
private static boolean closed;
|
// private static boolean closed;
|
||||||
|
|
||||||
static DataListener dataListener = new DataListener() {
|
static DataListener dataListener = new DataListener() {
|
||||||
public void onStringArrived(String string) {
|
public void onDataArrived(byte freshData[]) {
|
||||||
// jTextAreaIn.append(string);
|
// jTextAreaIn.append(string);
|
||||||
LinkManager.engineState.processNewData(string);
|
LinkManager.engineState.processNewData(new String(freshData));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
private static LinkManager.LinkStateListener listener;
|
private static LinkManager.LinkStateListener listener;
|
||||||
|
@ -39,10 +39,10 @@ class SerialManager {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
MessagesCentral.getInstance().postMessage(SerialManager.class, "Restarting serial IO");
|
MessagesCentral.getInstance().postMessage(SerialManager.class, "Restarting serial IO");
|
||||||
if (closed)
|
// if (closed)
|
||||||
return;
|
// return;
|
||||||
PortHolder.getInstance().close();
|
PortHolder.getInstance().close();
|
||||||
boolean result = PortHolder.getInstance().openPort(port, dataListener, SerialManager.listener);
|
PortHolder.getInstance().openPort(port, dataListener, SerialManager.listener);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,8 +35,7 @@ class SerialPortReader implements SerialPortEventListener {
|
||||||
private void handleRx(SerialPortEvent spe) throws SerialPortException {
|
private void handleRx(SerialPortEvent spe) throws SerialPortException {
|
||||||
if (spe.getEventValue() > 0) {
|
if (spe.getEventValue() > 0) {
|
||||||
byte[] buffer = serialPort.readBytes(spe.getEventValue());
|
byte[] buffer = serialPort.readBytes(spe.getEventValue());
|
||||||
String str = new String(buffer);
|
listener.onDataArrived(buffer);
|
||||||
listener.onStringArrived(str);
|
|
||||||
// System.out.println("arrived [" + str + "]");
|
// System.out.println("arrived [" + str + "]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue