+/**
+ * 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)
+{
+ if(param_getchar(Cmd, 0) == 'h')
+ {
+ PrintAndLog("Usage: data undec [factor]");
+ PrintAndLog("This function performs un-decimation, by repeating each sample N times");
+ PrintAndLog("Options: ");
+ PrintAndLog(" h This help");
+ PrintAndLog(" factor The number of times to repeat each sample.[default:2]");
+ PrintAndLog("Example: 'data undec 3'");
+ return 0;
+ }
+
+ uint8_t factor = param_get8ex(Cmd, 0,2, 10);
+ //We have memory, don't we?
+ int swap[MAX_GRAPH_TRACE_LEN] = { 0 };
+ uint32_t g_index = 0 ,s_index = 0;
+ while(g_index < GraphTraceLen && s_index < MAX_GRAPH_TRACE_LEN)
+ {
+ int count = 0;
+ for(count = 0; count < factor && s_index+count < MAX_GRAPH_TRACE_LEN; count ++)
+ swap[s_index+count] = GraphBuffer[g_index];
+ s_index+=count;
+ }
+
+ memcpy(GraphBuffer,swap, s_index * sizeof(int));
+ GraphTraceLen = s_index;
+ RepaintGraphWindow();
+ return 0;
+}