private static int HackRFSamplesAvailable(hackrf_transfer *ptr)
        {
            sbyte *buf = ptr->buffer;
            int    len = ptr->buffer_length;
            IntPtr ctx = ptr->rx_ctx;

            var gcHandle = GCHandle.FromIntPtr(ctx);

            if (!gcHandle.IsAllocated)
            {
                return(-1);
            }
            var instance = (HackRFDevice)gcHandle.Target;

            var sampleCount = (int)len / 2;

            if (instance._iqBuffer == null || instance._iqBuffer.Length != sampleCount)
            {
                instance._iqBuffer = UnsafeBuffer.Create(sampleCount, sizeof(Complex));
                instance._iqPtr    = (Complex *)instance._iqBuffer;
            }

            var ptrIq = instance._iqPtr;

            for (var i = 0; i < sampleCount; i++)
            {
                ptrIq->Imag = _lutPtr[*buf++];
                ptrIq->Real = _lutPtr[*buf++];
                ptrIq++;
            }

            instance.ComplexSamplesAvailable(instance._iqPtr, instance._iqBuffer.Length);
            return(0);
        }
Esempio n. 2
0
 private int HackRFSamplesAvailable(hackrf_transfer *samplesPtr)
 {
     return(0);
 }