* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <config.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
/* Flush line buffers. */
g_string_append_len(*out, ctx->lines[j]->str, ctx->lines[j]->len);
g_string_append_c(*out, '\n');
- if (j == ctx->num_enabled_channels - 1 && ctx->trigger > -1) {
- offset = ctx->trigger + ctx->trigger / 8;
+ if (j == ctx->num_enabled_channels - 1 && ctx->trigger > -1) {
+ /*
+ * Each group of 8 bits occupies 2 hex digits plus
+ * 1 separator. Calculate the position of the byte
+ * which contains the trigger, then adjust for the
+ * trigger's bit position within that byte.
+ */
+ offset = ctx->trigger / 8 * (2 + 1);
+ offset += (ctx->trigger % 8) / 4;
g_string_append_printf(*out, "T:%*s^ %d\n", offset, "", ctx->trigger);
ctx->trigger = -1;
}
SR_PRIV struct sr_output_module output_hex = {
.id = "hex",
.name = "Hexadecimal",
- .desc = "Hexadecimal digits",
+ .desc = "Hexadecimal digits logic data",
.exts = (const char*[]){"txt", NULL},
.flags = 0,
.options = get_options,