private void collectSignalSamples(int[] voltageSignal, int[] currentSignal)
        {
            sbyte[] values     = new sbyte[32];
            bool    bLastChunk = false;

            for (uint pass = 0; pass < 2; pass++)
            {
                int[] signal = (pass == 0) ? voltageSignal : currentSignal;
                if (signal == null)
                {
                    continue;
                }

                uint sampleIndex = 0;
                while (sampleIndex < signal.Length)
                {
                    if (sampleIndex + values.Length >= signal.Length)
                    {
                        bLastChunk = (pass == 1) || (currentSignal == null);
                    }

                    // Request the carrier voltage/current signal.
                    bool bGetVoltage = (pass == 0);
                    if (!deviceBoard.getCarrierSignal((ushort)sampleIndex, !bLastChunk,
                                                      pass == 0, values))
                    {
                        MyDebug.Fail("Response failed.");
                    }

                    for (uint i = 0; i < 32; i++)
                    {
                        signal[sampleIndex++] = values[i];
                        if (sampleIndex >= signal.Length)
                        {
                            break;
                        }
                    }
                }
            }
        }