Skip to content

Commit

Permalink
Implement Xirgo XT-2160 output command
Browse files Browse the repository at this point in the history
  • Loading branch information
tananaev committed Dec 16, 2017
1 parent 3ad24b1 commit 98de1d2
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/org/traccar/protocol/XirgoProtocol.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2015 - 2016 Anton Tananaev (anton@traccar.org)
* Copyright 2015 - 2017 Anton Tananaev (anton@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -23,13 +23,16 @@
import org.traccar.BaseProtocol;
import org.traccar.CharacterDelimiterFrameDecoder;
import org.traccar.TrackerServer;
import org.traccar.model.Command;

import java.util.List;

public class XirgoProtocol extends BaseProtocol {

public XirgoProtocol() {
super("xirgo");
setSupportedDataCommands(
Command.TYPE_OUTPUT_CONTROL);
}

@Override
Expand All @@ -40,6 +43,7 @@ protected void addSpecificHandlers(ChannelPipeline pipeline) {
pipeline.addLast("frameDecoder", new CharacterDelimiterFrameDecoder(1024, "##"));
pipeline.addLast("stringEncoder", new StringEncoder());
pipeline.addLast("stringDecoder", new StringDecoder());
pipeline.addLast("objectEncoder", new XirgoProtocolEncoder());
pipeline.addLast("objectDecoder", new XirgoProtocolDecoder(XirgoProtocol.this));
}
});
Expand All @@ -48,6 +52,7 @@ protected void addSpecificHandlers(ChannelPipeline pipeline) {
protected void addSpecificHandlers(ChannelPipeline pipeline) {
pipeline.addLast("stringEncoder", new StringEncoder());
pipeline.addLast("stringDecoder", new StringDecoder());
pipeline.addLast("objectEncoder", new XirgoProtocolEncoder());
pipeline.addLast("objectDecoder", new XirgoProtocolDecoder(XirgoProtocol.this));
}
});
Expand Down
38 changes: 38 additions & 0 deletions src/org/traccar/protocol/XirgoProtocolEncoder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* Copyright 2017 Anton Tananaev (anton@traccar.org)
*
* 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 org.traccar.protocol;

import org.traccar.StringProtocolEncoder;
import org.traccar.helper.Log;
import org.traccar.model.Command;

public class XirgoProtocolEncoder extends StringProtocolEncoder {

@Override
protected Object encodeCommand(Command command) {

switch (command.getType()) {
case Command.TYPE_OUTPUT_CONTROL:
return String.format("+XT:7005,%d,1", command.getInteger(Command.KEY_DATA) + 1);
default:
Log.warning(new UnsupportedOperationException(command.getType()));
break;
}

return null;
}

}
26 changes: 26 additions & 0 deletions test/org/traccar/protocol/XirgoProtocolEncoderTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.traccar.protocol;

import org.junit.Test;
import org.traccar.ProtocolTest;
import org.traccar.model.Command;

import static org.junit.Assert.assertEquals;

public class XirgoProtocolEncoderTest extends ProtocolTest {

@Test
public void testEncode() throws Exception {

XirgoProtocolEncoder encoder = new XirgoProtocolEncoder();

Command command = new Command();
command.setDeviceId(1);
command.setType(Command.TYPE_OUTPUT_CONTROL);
command.set(Command.KEY_INDEX, 0);
command.set(Command.KEY_DATA, 1);

assertEquals("+XT:7005,2,1", encoder.encodeCommand(command));

}

}

0 comments on commit 98de1d2

Please sign in to comment.