From 698b649e0ec1a4fd6c18f518cce1f5c8b79d67b1 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Sat, 31 Jan 2015 00:05:04 +0100 Subject: [PATCH] Added undec to un-decimate data on the client side, so we can use all those sweet demodders even if the data has been decimated on the ARM side --- client/cmddata.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/client/cmddata.c b/client/cmddata.c index fa056b67..964b8031 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -540,6 +540,35 @@ int CmdDec(const char *Cmd) RepaintGraphWindow(); return 0; } +/** + * Undecimate - I'd call it 'interpolate', but we'll save that + * name until someone does an actual interpolation command, not just + * blindly repeating samples + * @param Cmd + * @return + */ +int CmdUndec(const char *Cmd) +{ + //We have memory, don't we? + int swap[MAX_GRAPH_TRACE_LEN] = { 0 }; + uint32_t i = 0 ,j = 0; + while(j+1 < MAX_GRAPH_TRACE_LEN && i < GraphTraceLen) + { + swap[j] = GraphBuffer[i]; + swap[j+1] = GraphBuffer[i]; + i++; + j+=2; + } + memcpy(GraphBuffer,swap, j); + GraphTraceLen = j; + PrintAndLog("Undecimated by 2"); + RepaintGraphWindow(); + + /* + * Something is not right here, need to look into it, + * the undec seems to only operate on half the values **/ + return 0; +} /* Print our clock rate */ // uses data from graphbuffer @@ -1651,7 +1680,8 @@ static command_t CommandTable[] = {"threshold", CmdThreshold, 1, " -- Maximize/minimize every value in the graph window depending on threshold"}, {"dirthreshold", CmdDirectionalThreshold, 1, " -- Max rising higher up-thres/ Min falling lower down-thres, keep rest as prev."}, {"tune", CmdTuneSamples, 0, "Get hw tune samples for graph window"}, - {"zerocrossings", CmdZerocrossings, 1, "Count time between zero-crossings"}, + {"undec", CmdUndec, 1, "Un-decimate samples by 2"}, + {"zerocrossings", CmdZerocrossings, 1, "Count time between zero-crossings"}, {NULL, NULL, 0, NULL} }; -- 2.39.2