/** * generate a HTML page * * @param empty if this is true an empty output is generated * @return String with HTML data */ private String getEmptyHtmlPage() { final HtmlExporter exporter = createHtmlTemplate(ExportUtils.createHtmlExporter()); return exporter.toString( new MacroResolver() { @Override public Object resolve(final String aMacro, final Element aParent) { if ("date-now".equals(aMacro)) { final DateFormat df = DateFormat.getDateInstance(DateFormat.LONG); return df.format(new Date()); } else if ("decoded-bytes".equals(aMacro) || "detected-bus-errors".equals(aMacro) || "baudrate".equals(aMacro)) { return "-"; } else if ("decoded-data".equals(aMacro)) { return null; } return null; } }); }
/** * generate a HTML page * * @param empty if this is true an empty output is generated * @return String with HTML data */ private String toHtmlPage(final File aFile, final UARTDataSet aDataSet) throws IOException { final int bitCount = Integer.parseInt((String) this.bits.getSelectedItem()); final int bitAdder = ((bitCount % 4) != 0) ? 1 : 0; final MacroResolver macroResolver = new MacroResolver() { @Override public Object resolve(final String aMacro, final Element aParent) { if ("date-now".equals(aMacro)) { final DateFormat df = DateFormat.getDateInstance(DateFormat.LONG); return df.format(new Date()); } else if ("decoded-bytes".equals(aMacro)) { return Integer.valueOf(aDataSet.getDecodedSymbols()); } else if ("detected-bus-errors".equals(aMacro)) { return Integer.valueOf(aDataSet.getDetectedErrors()); } else if ("baudrate".equals(aMacro)) { final String baudrate; if (aDataSet.getBaudRate() <= 0) { baudrate = "<span class='error'>Baudrate calculation failed!</span>"; } else { baudrate = String.format( "%d (exact: %d)", Integer.valueOf(aDataSet.getBaudRate()), Integer.valueOf(aDataSet.getBaudRateExact())); if (!aDataSet.isBitLengthUsable()) { return baudrate.concat( " <span class='warning'>The baudrate may be wrong, use a higher samplerate to avoid this!</span>"); } return baudrate; } } else if ("decoded-data".equals(aMacro)) { final List<UARTData> decodedData = aDataSet.getData(); Element tr; for (int i = 0; i < decodedData.size(); i++) { final UARTData ds = decodedData.get(i); if (ds.isEvent()) { String rxEventData = ""; String txEventData = ""; String bgColor; if (UARTData.UART_TYPE_EVENT == ds.getType()) { rxEventData = txEventData = ds.getEventName(); bgColor = "#e0e0e0"; } else if (UARTData.UART_TYPE_RXEVENT == ds.getType()) { rxEventData = ds.getEventName(); bgColor = "#c0ffc0"; } else if (UARTData.UART_TYPE_TXEVENT == ds.getType()) { txEventData = ds.getEventName(); bgColor = "#c0ffc0"; } else { // unknown event bgColor = "#ff8000"; } if (txEventData.endsWith("_ERR") || rxEventData.endsWith("_ERR")) { bgColor = "#ff8000"; } tr = aParent .addChild(TR) .addAttribute("style", "background-color: " + bgColor + ";"); tr.addChild(TD).addContent(String.valueOf(i)); tr.addChild(TD) .addContent(Unit.Time.format(aDataSet.getTime(ds.getStartSampleIndex()))); tr.addChild(TD).addContent(rxEventData); tr.addChild(TD); tr.addChild(TD); tr.addChild(TD); tr.addChild(TD).addContent(txEventData); tr.addChild(TD); tr.addChild(TD); tr.addChild(TD); } else { String rxDataHex = "", rxDataBin = "", rxDataDec = "", rxDataASCII = ""; String txDataHex = "", txDataBin = "", txDataDec = "", txDataASCII = ""; // Normal data... if (UARTData.UART_TYPE_RXDATA == ds.getType()) { final int rxData = ds.getData(); rxDataHex = integerToHexString(rxData, (bitCount / 4) + bitAdder); rxDataBin = integerToBinString(rxData, bitCount); rxDataDec = String.valueOf(rxData); rxDataASCII = toASCII((char) rxData); } else /* if ( UARTData.UART_TYPE_TXDATA == ds.getType() ) */ { final int txData = ds.getData(); txDataHex = integerToHexString(txData, (bitCount / 4) + bitAdder); txDataBin = integerToBinString(txData, bitCount); txDataDec = String.valueOf(txData); txDataASCII = toASCII(txData); } tr = aParent.addChild(TR); tr.addChild(TD).addContent(String.valueOf(i)); tr.addChild(TD) .addContent(Unit.Time.format(aDataSet.getTime(ds.getStartSampleIndex()))); tr.addChild(TD).addContent("0x", rxDataHex); tr.addChild(TD).addContent("0b", rxDataBin); tr.addChild(TD).addContent(rxDataDec); tr.addChild(TD).addContent(rxDataASCII); tr.addChild(TD).addContent("0x", txDataHex); tr.addChild(TD).addContent("0b", txDataBin); tr.addChild(TD).addContent(txDataDec); tr.addChild(TD).addContent(txDataASCII); } } } return null; } }; if (aFile == null) { final HtmlExporter exporter = createHtmlTemplate(ExportUtils.createHtmlExporter()); return exporter.toString(macroResolver); } else { final HtmlFileExporter exporter = (HtmlFileExporter) createHtmlTemplate(ExportUtils.createHtmlExporter(aFile)); exporter.write(macroResolver); exporter.close(); } return null; }
/** * exports the data to a CSV file * * @param aFile File object */ private void storeToCsvFile(final File aFile, final UARTDataSet aDataSet) { try { final CsvExporter exporter = ExportUtils.createCsvExporter(aFile); exporter.setHeaders( "index", "start-time", "end-time", "event?", "event-type", "RxD event", "TxD event", "RxD data", "TxD data"); final List<UARTData> decodedData = aDataSet.getData(); for (int i = 0; i < decodedData.size(); i++) { final UARTData ds = decodedData.get(i); final String startTime = Unit.Time.format(aDataSet.getTime(ds.getStartSampleIndex())); final String endTime = Unit.Time.format(aDataSet.getTime(ds.getEndSampleIndex())); String eventType = null; String rxdEvent = null; String txdEvent = null; String rxdData = null; String txdData = null; switch (ds.getType()) { case UARTData.UART_TYPE_EVENT: eventType = ds.getEventName(); break; case UARTData.UART_TYPE_RXEVENT: rxdEvent = ds.getEventName(); break; case UARTData.UART_TYPE_TXEVENT: txdEvent = ds.getEventName(); break; case UARTData.UART_TYPE_RXDATA: rxdData = Integer.toString(ds.getData()); break; case UARTData.UART_TYPE_TXDATA: txdData = Integer.toString(ds.getData()); break; default: break; } exporter.addRow( Integer.valueOf(i), startTime, endTime, Boolean.valueOf(ds.isEvent()), eventType, rxdEvent, txdEvent, rxdData, txdData); } exporter.close(); } catch (final IOException exception) { // Make sure to handle IO-interrupted exceptions properly! if (!HostUtils.handleInterruptedException(exception)) { LOG.log(Level.WARNING, "CSV export failed!", exception); } } }