瀏覽代碼

Reset IQ buffer on SDRplay stream reset

master
Jan Svabenik 5 天之前
父節點
當前提交
1d9e912e28
共有 1 個文件被更改,包括 8 次插入4 次删除
  1. +8
    -4
      internal/sdrplay/sdrplay.go

+ 8
- 4
internal/sdrplay/sdrplay.go 查看文件

@@ -9,12 +9,11 @@ package sdrplay
#include <stdlib.h>
#include <string.h>

extern void goStreamCallback(short *xi, short *xq, unsigned int numSamples, void *cbContext);
extern void goStreamCallback(short *xi, short *xq, unsigned int numSamples, unsigned int reset, void *cbContext);

static void StreamACallback(short *xi, short *xq, sdrplay_api_StreamCbParamsT *params, unsigned int numSamples, unsigned int reset, void *cbContext) {
(void)params;
(void)reset;
goStreamCallback(xi, xq, numSamples, cbContext);
goStreamCallback(xi, xq, numSamples, reset, cbContext);
}

static void EventCallback(sdrplay_api_EventT eventId, sdrplay_api_TunerSelectT tuner, sdrplay_api_EventParamsT *params, void *cbContext) {
@@ -239,12 +238,17 @@ func (s *Source) ReadIQ(n int) ([]complex64, error) {
}

//export goStreamCallback
func goStreamCallback(xi *C.short, xq *C.short, numSamples C.uint, ctx unsafe.Pointer) {
func goStreamCallback(xi *C.short, xq *C.short, numSamples C.uint, reset C.uint, ctx unsafe.Pointer) {
h := cgo.Handle(uintptr(ctx))
src, ok := h.Value().(*Source)
if !ok || src == nil {
return
}
if reset != 0 {
src.mu.Lock()
src.buf = nil
src.mu.Unlock()
}
n := int(numSamples)
if n <= 0 {
return


Loading…
取消
儲存