@Test public void prepareDecoderUpdatePomMessagesTest() throws URISyntaxException { DecoderPomUpdate decoderPomUpdate = new DecoderPomUpdate(); File firmwareFile = new File(DecoderPomUpdate.class.getResource("/firmware/LD-G-31-Plus_V2_2.hex").toURI().getPath()); List<String> firmwareContent = decoderPomUpdate.loadFirmwareFile(firmwareFile); Assert.assertNotNull(firmwareContent); DecoderInformation decoderInformation = new DecoderInformation("3E000031020200000305201500000000"); List<CommandStationPomMessage> messages = decoderPomUpdate.prepareDecoderUpdatePomMessages(firmwareContent, decoderInformation); Assert.assertNotNull(messages); CommandStationPomMessage message = messages.get(0); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8705); Assert.assertEquals(message.getCvNumber(), 1); Assert.assertEquals(message.getCvValue(), 0x31); } }
@Test public void prepareNextRowPacketTest() { String line = ":1000000080090020ED000000C1000000C1000000D8"; DecoderPomUpdate decoderPomUpdate = new DecoderPomUpdate(); FirmwarePacket packet = decoderPomUpdate.parseLine(line); Assert.assertNotNull(packet); LOGGER.info("Current packet: {}", packet); CommandStationPomMessage message = decoderPomUpdate.prepareNextRowPacket(packet, DecoderType.locoDecoder); Assert.assertNotNull(message); LOGGER.info("Current message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); Assert.assertEquals(message.getCvNumber(), 0x300 + 1); Assert.assertEquals(message.getCvValue(), 0); line = ":10001000C1000000C1000000C1000000000000009D"; packet = decoderPomUpdate.parseLine(line); Assert.assertNotNull(packet); LOGGER.info("Current packet: {}", packet); message = decoderPomUpdate.prepareNextRowPacket(packet, DecoderType.locoDecoder); Assert.assertNotNull(message); LOGGER.info("Current message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); Assert.assertEquals(message.getCvNumber(), 0x300 + 1); Assert.assertEquals(message.getCvValue(), 16); }
@Test public void prepareLine2Test() { String line2 = ":1000000080090020ED000000C1000000C1000000D8"; DecoderPomUpdate decoderPomUpdate = new DecoderPomUpdate(); FirmwarePacket packet = decoderPomUpdate.parseLine(line2); Assert.assertNotNull(packet); LOGGER.info("Current packet: {}", packet); int packetLen = ByteUtils.getInt(packet.getLen()); // 08 F2D0 00 CommandStationPomMessage message = decoderPomUpdate.prepareNextRowPacket(packet, DecoderType.locoDecoder); Assert.assertNotNull(message); LOGGER.info("Row packet, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8448); Assert.assertEquals(message.getCvNumber(), 0x300 + 1); Assert.assertEquals(message.getCvValue(), 0); for (int index = 0; index < (packetLen / 3 + 1); index++) { message = decoderPomUpdate.prepareNextDataPacket(packet, DecoderType.locoDecoder); Assert.assertNotNull(message); LOGGER.info("Data packet, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); } // verify the last message Assert.assertNotNull(message); LOGGER.info("Data packet, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 0); Assert.assertEquals(message.getCvNumber(), 0x00 + 1 + 0x0100); Assert.assertEquals(message.getCvValue(), 0x00); }
@Test public void prepareSmallerLine2Test() { String line2 = ":08F2D000047E00003281000001"; DecoderPomUpdate decoderPomUpdate = new DecoderPomUpdate(); FirmwarePacket packet = decoderPomUpdate.parseLine(line2); Assert.assertNotNull(packet); LOGGER.info("Current packet: {}", packet); int packetLen = ByteUtils.getInt(packet.getLen()); // 08 F2D0 00 CommandStationPomMessage message = decoderPomUpdate.prepareNextRowPacket(packet, DecoderType.locoDecoder); Assert.assertNotNull(message); LOGGER.info("Row packet, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8448); Assert.assertEquals(message.getCvNumber(), 0xF2 + 1); Assert.assertEquals(message.getCvValue(), 0xD0); for (int index = 0; index < (packetLen / 3 + 1); index++) { message = decoderPomUpdate.prepareNextDataPacket(packet, DecoderType.locoDecoder); Assert.assertNotNull(message); LOGGER.info("Data packet, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); } // verify the last message Assert.assertNotNull(message); LOGGER.info("Data packet, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 0 /* 0x00 : 8192 */); Assert.assertEquals(message.getCvNumber(), 0x00 + 1 + 0x0200); Assert.assertEquals(message.getCvValue(), 0x00); }
LOGGER.info("CV800, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); Assert.assertEquals(message.getCvNumber(), 800); Assert.assertEquals(message.getCvValue(), 62); LOGGER.info("CV801, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); Assert.assertEquals(message.getCvNumber(), 801); Assert.assertEquals(message.getCvValue(), DecoderType.locoDecoder.ordinal()); LOGGER.info("CV802, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); Assert.assertEquals(message.getCvNumber(), 802); Assert.assertEquals(message.getCvValue(), 0); LOGGER.info("CV803, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); Assert.assertEquals(message.getCvNumber(), 803); Assert.assertEquals(message.getCvValue(), 0x31); /* LD-G-31 */ LOGGER.info("CV804, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); Assert.assertEquals(message.getCvNumber(), 804); Assert.assertEquals(message.getCvValue(), 2); LOGGER.info("CV805, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); Assert.assertEquals(message.getCvNumber(), 805); Assert.assertEquals(message.getCvValue(), 2); LOGGER.info("CV806, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData())); Assert.assertEquals(message.getCvNumber(), 806); Assert.assertEquals(message.getCvValue(), 0); LOGGER.info("CV807, message: {}, formatted data: {}", message, ByteUtils.bytesToHex(message.getData()));
Assert.assertEquals(message.getDecoderAddress().getAddress(), 8448); Assert.assertEquals(message.getCvNumber(), 0xF2 + 1); Assert.assertEquals(message.getCvValue(), 0xD0); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 4 /* 0x04 : 8196 */); Assert.assertEquals(message.getCvNumber(), 0x7E + 1); Assert.assertEquals(message.getCvValue(), 0x00); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 0 /* 0x00 : 8192 */); Assert.assertEquals(message.getCvNumber(), 0x32 + 1 + 0x0100); Assert.assertEquals(message.getCvValue(), 0x81); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 0 /* 0x00 : 8192 */); Assert.assertEquals(message.getCvNumber(), 0x00 + 1 + 0x0200); Assert.assertEquals(message.getCvValue(), 0x00);
Assert.assertEquals(message.getDecoderAddress().getAddress(), 8448); Assert.assertEquals(message.getCvNumber(), 0xF2 + 0x100 + 1); Assert.assertEquals(message.getCvValue(), 0xF8); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 16 /* 0x10 : 8208 */); Assert.assertEquals(message.getCvNumber(), 0x27 + 1); Assert.assertEquals(message.getCvValue(), 0x00); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 0 /* 0x00 : 8192 */); Assert.assertEquals(message.getCvNumber(), 0x00 + 1 + 0x0100); Assert.assertEquals(message.getCvValue(), 0x80); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 81 /* 0x51 : 8273 */); Assert.assertEquals(message.getCvNumber(), 0x01 + 1 + 0x0200); Assert.assertEquals(message.getCvValue(), 0x00); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 128 /* 0x80 : 8320 */); Assert.assertEquals(message.getCvNumber(), 0x51 + 1 + 0x0300); Assert.assertEquals(message.getCvValue(), 0x01);
Assert.assertEquals(message.getDecoderAddress().getAddress(), 8448); Assert.assertEquals(message.getCvNumber(), 0x300 + 1); Assert.assertEquals(message.getCvValue(), 0); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 128 /* 8320 */); Assert.assertEquals(message.getCvNumber(), 0x09 + 1); Assert.assertEquals(message.getCvValue(), 0x00); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 32 /* 8224 */); Assert.assertEquals(message.getCvNumber(), 0xED + 1 + 0x0100); Assert.assertEquals(message.getCvValue(), 0x00); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 0); Assert.assertEquals(message.getCvNumber(), 0x00 + 1 + 0x0200); Assert.assertEquals(message.getCvValue(), 0xC1); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 0); Assert.assertEquals(message.getCvNumber(), 0x00 + 1 + 0x0300); Assert.assertEquals(message.getCvValue(), 0x00); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 193 /* 8385 */); Assert.assertEquals(message.getCvNumber(), 0x00 + 1 + 0x0000); Assert.assertEquals(message.getCvValue(), 0x00); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8192 + 0); Assert.assertEquals(message.getCvNumber(), 0x00 + 1 + 0x0100); Assert.assertEquals(message.getCvValue(), 0x00); Assert.assertEquals(message.getDecoderAddress().getAddress(), 8448);