Skip to content

Commit e68fd9c

Browse files
author
Daniel Tuerk
committed
v.0.3.3: fix write delay and connection
1 parent 4852592 commit e68fd9c

9 files changed

Lines changed: 30 additions & 29 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
44

55
<groupId>net.wbz.selectrix4java</groupId>
6-
<version>0.3.2-SNAPSHOT</version>
6+
<version>0.3.3-SNAPSHOT</version>
77

88
<modelVersion>4.0.0</modelVersion>
99
<artifactId>selectrix4java</artifactId>

src/main/java/net/wbz/selectrix4java/block/FeedbackBlockModule.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ private void handleReceivedFeedbackData(Collection<BusAddressData> data) {
7878
}
7979

8080
if (stateAddressNewDataValue != -1 && feedbackAddressNewDataValue != -1) {
81-
int sequenceNr = stateAddressNewDataValue & 0x60;
81+
int sequenceNr = (stateAddressNewDataValue >> 5) & 0b11;
82+
//int sequenceNr = stateAddressNewDataValue & 0x60;
8283
log.trace("sequence {}", sequenceNr);
8384

8485
FeedbackTrainData feedbackTrainData = new FeedbackTrainData();
@@ -95,6 +96,9 @@ private void handleReceivedFeedbackData(Collection<BusAddressData> data) {
9596
isDuplicate = trainAddressLastSend.get(feedbackTrainData.getTrainAddress()).equals(feedbackTrainData);
9697
}
9798
if (!isDuplicate) {
99+
if(log.isTraceEnabled()) {
100+
log.trace("{}: value: {}",getBusAddress(), feedbackTrainData);
101+
}
98102
trainAddressLastSend.put(feedbackTrainData.getTrainAddress(), feedbackTrainData);
99103
if (feedbackTrainData.isEnteringBlock()) {
100104
dispatcher.fireTrainEnterBlock(feedbackTrainData.getBlockNr(), feedbackTrainData.getTrainAddress(),
@@ -104,11 +108,11 @@ private void handleReceivedFeedbackData(Collection<BusAddressData> data) {
104108
feedbackTrainData.isTrainDirectionForward());
105109
}
106110
} else {
107-
log.error("duplicate: {}", feedbackTrainData);
111+
log.error("duplicate ({}): {}", getBusAddress(), feedbackTrainData);
108112
}
109113

110114
} else {
111-
log.error("state ({}) and feedback ({}) not new", stateAddressNewDataValue, feedbackAddressNewDataValue);
115+
log.error("{}: state ({}) and feedback ({}) not new", getBusAddress(), stateAddressNewDataValue, feedbackAddressNewDataValue);
112116
}
113117
}
114118

src/main/java/net/wbz/selectrix4java/bus/BusAddress.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ public void valueChanged(int oldValue, int newValue) {
6060
if ((byte) newValue != lastReceivedData) {
6161
lastReceivedData = (byte) newValue;
6262
if (bitsToUpdate.isEmpty()) {
63-
LOG.trace("update data {} to last received {}", data, lastReceivedData);
6463
data = lastReceivedData;
6564
}
6665
/*

src/main/java/net/wbz/selectrix4java/bus/BusDataDispatcher.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,10 +187,11 @@ private void callConsumers(List<AbstractBusDataConsumer> consumers, int busNr, b
187187
for (int address = 0; address < data.length; address++) {
188188
// skip the multiplex counter of FCC TODO refactor to FCCImpl
189189
if (address != 111) {
190-
if (initialCall || Byte.compare(data[address], oldData[address]) != 0) {
191-
log.trace(String.format("data changed (initial: %s) - bus: %d, address: %d, old: %d, new: %d",
192-
initialCall, busNr, address, oldData[address], data[address]));
193-
190+
if (initialCall || data[address] != oldData[address]) {
191+
if (log.isDebugEnabled() && (address > 0 && address != 112)) {
192+
log.debug(String.format("data changed (initial: %s) - bus: %d, address: %d, old: %d, new: %d",
193+
initialCall, busNr, address, oldData[address], data[address]));
194+
}
194195
for (AbstractBusDataConsumer consumer : consumersToCall) {
195196
if (consumer instanceof AllBusDataConsumer) {
196197
callAllBusDataConsumers(busNr, address, oldData[address], data[address],

src/main/java/net/wbz/selectrix4java/data/BusDataChannel.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ public class BusDataChannel {
3333
/**
3434
* Delay between each task.
3535
*/
36-
public static final long DELAY_IN_MS = 55L;
36+
public static final long DELAY_IN_MS = 77L;
37+
//public static final long DELAY_IN_MS = 55L;
3738

3839
private static final Logger log = LoggerFactory.getLogger(BusDataChannel.class);
3940
/**

src/main/java/net/wbz/selectrix4java/data/ReadBlockTask.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public class ReadBlockTask extends AbstractSerialAccessTask {
3434
* TODO FCC specific
3535
*/
3636
private static final int DATA = 3;
37+
private static final byte[] WRITE_BYTES = new byte[]{(byte) ADDRESS, (byte) DATA};
38+
3739
/**
3840
* Delay to read the SX bus.
3941
*/
@@ -66,7 +68,7 @@ public Boolean call() {
6668
private boolean readBlock(byte[] reply) {
6769
// request bus data
6870
try {
69-
getOutputStream().write(new byte[]{(byte) ADDRESS, (byte) DATA});
71+
getOutputStream().write(WRITE_BYTES);
7072
getOutputStream().flush();
7173

7274
// waiting for full response from FCC

src/main/java/net/wbz/selectrix4java/data/WriteTask.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,9 @@ public Boolean call() {
7171
} while (reply < 0);
7272

7373
if (reply == 0) {
74-
log.debug("write successful!");
74+
if(log.isDebugEnabled()) {
75+
log.debug("write successful, reply: {}", reply);
76+
}
7577
} else {
7678
log.warn("write error reply: " + reply);
7779
}

src/main/java/net/wbz/selectrix4java/device/serial/SerialDevice.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,14 +79,20 @@ protected BusDataChannel doConnect(BusDataDispatcher busDataDispatcher) throws D
7979
System.setProperty("gnu.io.rxtx.SerialPorts", deviceId);
8080
serialPort = SerialPort.getCommPort(deviceId);
8181
try {
82-
serialPort.openPort();
83-
serialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 0, 0);
82+
83+
serialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 200, 200);
8484
outputStream = serialPort.getOutputStream();
8585
inputStream = serialPort.getInputStream();
8686
serialPort.setFlowControl(SerialPort.FLOW_CONTROL_DISABLED);
8787
serialPort.setBaudRate(baudRate);
8888
serialPort.setNumDataBits(8);
8989
serialPort.setNumStopBits(1);
90+
serialPort.setParity(SerialPort.NO_PARITY);
91+
92+
if(!serialPort.openPort()) throw new Exception("can't open port");
93+
94+
outputStream = serialPort.getOutputStream();
95+
inputStream = serialPort.getInputStream();
9096
} catch (Exception e) {
9197
throw new DeviceAccessException(String.format("can't connect to device for id %s", deviceId), e);
9298
}

src/main/resources/log4j2.xml

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<configuration>
33
<Properties>
4-
<Property name="LOG_PATTERN">%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n</Property>
4+
<Property name="LOG_PATTERN">sl - %d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n</Property>
55
</Properties>
66

77
<Appenders>
@@ -11,23 +11,9 @@
1111
<PatternLayout pattern="${LOG_PATTERN}"/>
1212
</Console>
1313

14-
<!-- File Appenders on need basis -->
15-
<RollingFile name="File" fileName="${sys:user.home}/.moba/log/controlcenter.log"
16-
filePattern="${sys:user.home}/.moba/log/controlcenter-%d{yyyy-MM-dd}-%i.log">
17-
<LevelRangeFilter minLevel="DEBUG" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
18-
<PatternLayout pattern="${LOG_PATTERN}"/>
19-
<Policies>
20-
<SizeBasedTriggeringPolicy size="10MB"/>
21-
</Policies>
22-
<DefaultRolloverStrategy max="10"/>
23-
</RollingFile>
24-
2514
</Appenders>
2615

2716
<Loggers>
28-
<logger name="net.wbz">
29-
<level value="debug"/>
30-
</logger>
3117

3218
<logger name="net.wbz.selectrix4java.block">
3319
<level value="trace"/>

0 commit comments

Comments
 (0)