CHG: added some documentation about what arguments does.
CHG: 'data tune' - added flush after printf.
                        size_t len = 0;
                        size_t startidx = c->arg[0];
                        uint8_t isok = FALSE;
+                       // arg0 = startindex
+                       // arg1 = length bytes to transfer
+                       // arg2 = RFU
+                       //Dbprintf("transfer to client parameters: %llu | %llu | %llu", c->arg[0], c->arg[1], c->arg[2]);
+                       
                        for(size_t i = 0; i < c->arg[1]; i += USB_CMD_DATA_SIZE) {
-                               len = MIN((c->arg[1] - i),USB_CMD_DATA_SIZE);
+                               len = MIN( (c->arg[1] - i), USB_CMD_DATA_SIZE);
                                isok = cmd_send(CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K, i, len, BigBuf_get_traceLen(), BigBuf + startidx + i, len);
                                if (!isok) 
                                        Dbprintf("transfer to client failed ::  | bytes %d", len);
                }
                case CMD_DOWNLOADED_SIM_SAMPLES_125K: {
                        // iceman; since changing fpga_bitstreams clears bigbuff, Its better to call it before.
-                       // to be able to use this one for uploading data to device not only for LF, I use c->arg[1] 
+                       // to be able to use this one for uploading data to device 
+                       // arg1 = 0 upload for LF usage 
+                       //        1 upload for HF usage
                        if ( c->arg[1] == 0 )
                                FpgaDownloadAndGo(FPGA_BITSTREAM_LF);
                        else 
 
        TurnReadLFOn(READ_GAP);
        
        // Acquisition
-       doT55x7Acquisition(12000);
+       doT55x7Acquisition(7679);
        
        // Turn the field off
        FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); // field off
 
        while(!WaitForResponseTimeout(CMD_MEASURED_ANTENNA_TUNING, &resp, 2000)) {
                timeout++;
                printf(".");
+               fflush(stdout);
                if (timeout > 7) {
                        PrintAndLog("\nNo response from Proxmark. Aborting...");
                        return 1;
 
                return 0;\r
        }\r
 \r
-       uint8_t got[12288];\r
+       //uint8_t got[12288];\r
+       uint8_t got[7679];\r
        GetFromBigBuf(got, sizeof(got), 0);\r
        if ( !WaitForResponseTimeout(CMD_ACK, NULL, 8000) ) {\r
                PrintAndLog("command execution time out");\r
 
                                printf("\r#db# %s", s);
                                fflush(stdout);
                        }
-                       else 
+                       else {
                                PrintAndLog("#db# %s", s);
-                       
+                       }
                        return;
                } break;
 
                }
                case CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K:
                case CMD_DOWNLOADED_EML_BIGBUF: {
+                       // sample_buf is a array pointer, located in data.c
+                       // arg0 = offset in transfer. Startindex of this chunk
+                       // arg1 = length bytes to transfer
+                       // arg2 = bigbuff tracelength (?)
                        memcpy( sample_buf + (UC->arg[0]), UC->d.asBytes, UC->arg[1]);
+                       //printf("DBG:: Download from device. chunk %llu | size %llu | tracelen:%llu \n", UC->arg[0], UC->arg[1], UC->arg[2]);
                        break;
                }
                default: {
 
                *hi2 = (*hi2<<1)|(*hi>>31);
                *hi = (*hi<<1)|(*lo>>31);
                //Then, shift in a 0 or one into low
+               *lo <<= 1;
                if (dest[idx] && !dest[idx+1])  // 1 0
-                       *lo=(*lo<<1)|1;
+                       *lo |= 1;
                else // 0 1
-                       *lo=(*lo<<1)|0;
+                       *lo |= 0;
        }
        return (int)startIdx;
 }