hakuna matata

This commit is contained in:
Eray Arslan 2021-05-21 21:47:02 +03:00
parent 19e8f3c331
commit 1ed25e669c
5 changed files with 337 additions and 214 deletions

View File

@ -13,6 +13,7 @@
## Notes
```shell
brew install pkg-config
brew install portaudio
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/Cellar/portaudio/19.6.0/lib/pkgconfig"
```

View File

@ -27,15 +27,17 @@ func StreamCallback(
metadata *C.struct_bladerf_metadata,
samples unsafe.Pointer,
numSamples C.size_t,
userData unsafe.Pointer,
userDataPtr unsafe.Pointer,
) unsafe.Pointer {
ud := pointer.Restore(userData).(UserData)
userData := pointer.Restore(userDataPtr).(UserData)
for i := uint32(0); i < uint32(numSamples); i++ {
ud.results[i] = int16(*((*C.int16_t)(unsafe.Pointer(uintptr(samples) + (C.sizeof_int16_t * uintptr(i))))))
userData.results[i] = int16(
*((*C.int16_t)(unsafe.Pointer(uintptr(samples) + (C.sizeof_int16_t * uintptr(i))))),
)
}
ud.callback(ud.results)
userData.callback(userData.results)
return samples
}
@ -45,17 +47,17 @@ func GetVersion() Version {
return NewVersion(&version)
}
func PrintVersion(version Version) {
func (version *Version) Print() {
fmt.Printf("v%d.%d.%d (\"%s\")", version.major, version.minor, version.patch, version.describe)
}
func LoadFpga(bladeRF BladeRF, imagePath string) error {
func (bladeRF *BladeRF) LoadFpga(imagePath string) error {
path := C.CString(imagePath)
defer C.free(unsafe.Pointer(path))
return GetError(C.bladerf_load_fpga(bladeRF.ref, path))
}
func GetFpgaSize(bladeRF BladeRF) (FpgaSize, error) {
func (bladeRF *BladeRF) GetFpgaSize() (FpgaSize, error) {
var size C.bladerf_fpga_size
err := GetError(C.bladerf_get_fpga_size(bladeRF.ref, &size))
@ -66,7 +68,7 @@ func GetFpgaSize(bladeRF BladeRF) (FpgaSize, error) {
return FpgaSize(size), nil
}
func GetQuickTune(bladeRF BladeRF, channel Channel) (QuickTune, error) {
func (bladeRF *BladeRF) GetQuickTune(channel Channel) (QuickTune, error) {
var quickTune C.struct_bladerf_quick_tune
err := GetError(C.bladerf_get_quick_tune(bladeRF.ref, C.bladerf_channel(channel), &quickTune))
@ -78,11 +80,11 @@ func GetQuickTune(bladeRF BladeRF, channel Channel) (QuickTune, error) {
return QuickTune{ref: &quickTune}, nil
}
func CancelScheduledReTunes(bladeRF BladeRF, channel Channel) error {
func (bladeRF *BladeRF) CancelScheduledReTunes(channel Channel) error {
return GetError(C.bladerf_cancel_scheduled_retunes(bladeRF.ref, C.bladerf_channel(channel)))
}
func GetFpgaSource(bladeRF BladeRF) (FpgaSource, error) {
func (bladeRF *BladeRF) GetFpgaSource() (FpgaSource, error) {
var source C.bladerf_fpga_source
err := GetError(C.bladerf_get_fpga_source(bladeRF.ref, &source))
@ -93,7 +95,7 @@ func GetFpgaSource(bladeRF BladeRF) (FpgaSource, error) {
return FpgaSource(source), nil
}
func GetFpgaBytes(bladeRF BladeRF) (uint32, error) {
func (bladeRF *BladeRF) GetFpgaBytes() (uint32, error) {
var size C.size_t
err := GetError(C.bladerf_get_fpga_bytes(bladeRF.ref, &size))
@ -104,7 +106,7 @@ func GetFpgaBytes(bladeRF BladeRF) (uint32, error) {
return uint32(size), nil
}
func GetFpgaFlashSize(bladeRF BladeRF) (uint32, bool, error) {
func (bladeRF *BladeRF) GetFpgaFlashSize() (uint32, bool, error) {
var size C.uint32_t
var isGuess C.bool
err := GetError(C.bladerf_get_flash_size(bladeRF.ref, &size, &isGuess))
@ -116,7 +118,7 @@ func GetFpgaFlashSize(bladeRF BladeRF) (uint32, bool, error) {
return uint32(size), bool(isGuess), nil
}
func GetFirmwareVersion(bladeRF BladeRF) (Version, error) {
func (bladeRF *BladeRF) GetFirmwareVersion() (Version, error) {
var version C.struct_bladerf_version
err := GetError(C.bladerf_fw_version(bladeRF.ref, &version))
@ -127,7 +129,7 @@ func GetFirmwareVersion(bladeRF BladeRF) (Version, error) {
return NewVersion(&version), nil
}
func IsFpgaConfigured(bladeRF BladeRF) (bool, error) {
func (bladeRF *BladeRF) IsFpgaConfigured() (bool, error) {
out := C.bladerf_is_fpga_configured(bladeRF.ref)
if out < 0 {
@ -137,11 +139,11 @@ func IsFpgaConfigured(bladeRF BladeRF) (bool, error) {
return out == 1, nil
}
func GetDeviceSpeed(bladeRF BladeRF) DeviceSpeed {
func (bladeRF *BladeRF) GetDeviceSpeed() DeviceSpeed {
return DeviceSpeed(int(C.bladerf_device_speed(bladeRF.ref)))
}
func GetFpgaVersion(bladeRF BladeRF) (Version, error) {
func (bladeRF *BladeRF) GetFpgaVersion() (Version, error) {
var version C.struct_bladerf_version
err := GetError(C.bladerf_fpga_version(bladeRF.ref, &version))
@ -152,7 +154,7 @@ func GetFpgaVersion(bladeRF BladeRF) (Version, error) {
return NewVersion(&version), nil
}
func FreeDeviceList(deviceInfo DeviceInfo) {
func (deviceInfo *DeviceInfo) FreeDeviceList() {
C.bladerf_free_device_list(deviceInfo.ref)
}
@ -181,7 +183,7 @@ func GetDeviceList() ([]DeviceInfo, error) {
))
}
FreeDeviceList(devices[0])
devices[0].FreeDeviceList()
}
return devices, nil
@ -212,7 +214,7 @@ func GetBootloaderList() ([]DeviceInfo, error) {
))
}
FreeDeviceList(devices[0])
devices[0].FreeDeviceList()
}
return devices, nil
@ -224,7 +226,7 @@ func InitDeviceInfo() DeviceInfo {
return NewDeviceInfo(&deviceInfo)
}
func GetDeviceInfo(bladeRF BladeRF) (DeviceInfo, error) {
func (bladeRF *BladeRF) GetDeviceInfo() (DeviceInfo, error) {
var deviceInfo C.struct_bladerf_devinfo
err := GetError(C.bladerf_get_devinfo(bladeRF.ref, &deviceInfo))
@ -235,11 +237,11 @@ func GetDeviceInfo(bladeRF BladeRF) (DeviceInfo, error) {
return NewDeviceInfo(&deviceInfo), nil
}
func DeviceInfoMatches(a DeviceInfo, b DeviceInfo) bool {
return bool(C.bladerf_devinfo_matches(a.ref, b.ref))
func (deviceInfo *DeviceInfo) DeviceInfoMatches(target DeviceInfo) bool {
return bool(C.bladerf_devinfo_matches(deviceInfo.ref, target.ref))
}
func DeviceStringMatches(deviceString string, deviceInfo DeviceInfo) bool {
func (deviceInfo *DeviceInfo) DeviceStringMatches(deviceString string) bool {
val := C.CString(deviceString)
defer C.free(unsafe.Pointer(val))
@ -260,7 +262,7 @@ func GetDeviceInfoFromString(deviceString string) (DeviceInfo, error) {
return NewDeviceInfo(&deviceInfo), nil
}
func OpenWithDeviceInfo(deviceInfo DeviceInfo) (BladeRF, error) {
func (deviceInfo *DeviceInfo) Open() (BladeRF, error) {
var bladeRF *C.struct_bladerf
err := GetError(C.bladerf_open_with_devinfo(&bladeRF, deviceInfo.ref))
@ -293,19 +295,19 @@ func Open() (BladeRF, error) {
return BladeRF{ref: bladeRF}, nil
}
func Close(bladeRF BladeRF) {
func (bladeRF *BladeRF) Close() {
C.bladerf_close(bladeRF.ref)
}
func SetLoopback(bladeRF BladeRF, loopback Loopback) error {
func (bladeRF *BladeRF) SetLoopback(loopback Loopback) error {
return GetError(C.bladerf_set_loopback(bladeRF.ref, C.bladerf_loopback(loopback)))
}
func IsLoopbackModeSupported(bladeRF BladeRF, loopback Loopback) bool {
func (bladeRF *BladeRF) IsLoopbackModeSupported(loopback Loopback) bool {
return bool(C.bladerf_is_loopback_mode_supported(bladeRF.ref, C.bladerf_loopback(loopback)))
}
func GetLoopback(bladeRF BladeRF) (Loopback, error) {
func (bladeRF *BladeRF) GetLoopback() (Loopback, error) {
var loopback C.bladerf_loopback
err := GetError(C.bladerf_get_loopback(bladeRF.ref, &loopback))
@ -316,19 +318,30 @@ func GetLoopback(bladeRF BladeRF) (Loopback, error) {
return Loopback(loopback), nil
}
func ScheduleReTune(bladeRF BladeRF, channel Channel, timestamp Timestamp, frequency uint64, quickTune QuickTune) error {
return GetError(C.bladerf_schedule_retune(bladeRF.ref, C.bladerf_channel(channel), C.bladerf_timestamp(timestamp), C.bladerf_frequency(frequency), quickTune.ref))
func (bladeRF *BladeRF) ScheduleReTune(
channel Channel,
timestamp Timestamp,
frequency uint64,
quickTune QuickTune,
) error {
return GetError(C.bladerf_schedule_retune(
bladeRF.ref,
C.bladerf_channel(channel),
C.bladerf_timestamp(timestamp),
C.bladerf_frequency(frequency),
quickTune.ref,
))
}
func SelectBand(bladeRF BladeRF, channel Channel, frequency uint64) error {
func (bladeRF *BladeRF) SelectBand(channel Channel, frequency uint64) error {
return GetError(C.bladerf_select_band(bladeRF.ref, C.bladerf_channel(channel), C.bladerf_frequency(frequency)))
}
func SetFrequency(bladeRF BladeRF, channel Channel, frequency uint64) error {
func (bladeRF *BladeRF) SetFrequency(channel Channel, frequency uint64) error {
return GetError(C.bladerf_set_frequency(bladeRF.ref, C.bladerf_channel(channel), C.bladerf_frequency(frequency)))
}
func GetFrequency(bladeRF BladeRF, channel Channel) (uint64, error) {
func (bladeRF *BladeRF) GetFrequency(channel Channel) (uint64, error) {
var frequency C.uint64_t
err := GetError(C.bladerf_get_frequency(bladeRF.ref, C.bladerf_channel(channel), &frequency))
@ -339,9 +352,14 @@ func GetFrequency(bladeRF BladeRF, channel Channel) (uint64, error) {
return uint64(frequency), nil
}
func SetSampleRate(bladeRF BladeRF, channel Channel, sampleRate uint) (uint, error) {
func (bladeRF *BladeRF) SetSampleRate(channel Channel, sampleRate uint) (uint, error) {
var actual C.uint
err := GetError(C.bladerf_set_sample_rate(bladeRF.ref, C.bladerf_channel(channel), C.bladerf_sample_rate(sampleRate), &actual))
err := GetError(C.bladerf_set_sample_rate(
bladeRF.ref,
C.bladerf_channel(channel),
C.bladerf_sample_rate(sampleRate),
&actual),
)
if err != nil {
return 0, err
@ -350,11 +368,11 @@ func SetSampleRate(bladeRF BladeRF, channel Channel, sampleRate uint) (uint, err
return uint(actual), nil
}
func SetRxMux(bladeRF BladeRF, mux RxMux) error {
func (bladeRF *BladeRF) SetRxMux(mux RxMux) error {
return GetError(C.bladerf_set_rx_mux(bladeRF.ref, C.bladerf_rx_mux(mux)))
}
func GetRxMux(bladeRF BladeRF) (RxMux, error) {
func (bladeRF *BladeRF) GetRxMux() (RxMux, error) {
var rxMux C.bladerf_rx_mux
err := GetError(C.bladerf_get_rx_mux(bladeRF.ref, &rxMux))
@ -365,14 +383,19 @@ func GetRxMux(bladeRF BladeRF) (RxMux, error) {
return RxMux(rxMux), nil
}
func SetRationalSampleRate(bladeRF BladeRF, channel Channel, rationalRate RationalRate) (RationalRate, error) {
func (bladeRF *BladeRF) SetRationalSampleRate(channel Channel, rationalRate RationalRate) (RationalRate, error) {
var actual C.struct_bladerf_rational_rate
rationalSampleRate := C.struct_bladerf_rational_rate{
num: C.uint64_t(rationalRate.num),
integer: C.uint64_t(rationalRate.integer),
den: C.uint64_t(rationalRate.den),
}
err := GetError(C.bladerf_set_rational_sample_rate(bladeRF.ref, C.bladerf_channel(channel), &rationalSampleRate, &actual))
err := GetError(C.bladerf_set_rational_sample_rate(
bladeRF.ref,
C.bladerf_channel(channel),
&rationalSampleRate,
&actual),
)
if err != nil {
return RationalRate{}, err
@ -381,7 +404,7 @@ func SetRationalSampleRate(bladeRF BladeRF, channel Channel, rationalRate Ration
return NewRationalRate(&actual), nil
}
func GetSampleRate(bladeRF BladeRF, channel Channel) (uint, error) {
func (bladeRF *BladeRF) GetSampleRate(channel Channel) (uint, error) {
var sampleRate C.uint
err := GetError(C.bladerf_get_sample_rate(bladeRF.ref, C.bladerf_channel(channel), &sampleRate))
@ -392,7 +415,7 @@ func GetSampleRate(bladeRF BladeRF, channel Channel) (uint, error) {
return uint(sampleRate), nil
}
func GetRationalSampleRate(bladeRF BladeRF, channel Channel) (RationalRate, error) {
func (bladeRF *BladeRF) GetRationalSampleRate(channel Channel) (RationalRate, error) {
var rate C.struct_bladerf_rational_rate
err := GetError(C.bladerf_get_rational_sample_rate(bladeRF.ref, C.bladerf_channel(channel), &rate))
@ -403,7 +426,7 @@ func GetRationalSampleRate(bladeRF BladeRF, channel Channel) (RationalRate, erro
return NewRationalRate(&rate), nil
}
func GetSampleRateRange(bladeRF BladeRF, channel Channel) (Range, error) {
func (bladeRF *BladeRF) GetSampleRateRange(channel Channel) (Range, error) {
var _range *C.struct_bladerf_range
err := GetError(C.bladerf_get_sample_rate_range(bladeRF.ref, C.bladerf_channel(channel), &_range))
@ -414,7 +437,7 @@ func GetSampleRateRange(bladeRF BladeRF, channel Channel) (Range, error) {
return NewRange(_range), nil
}
func GetFrequencyRange(bladeRF BladeRF, channel Channel) (Range, error) {
func (bladeRF *BladeRF) GetFrequencyRange(channel Channel) (Range, error) {
var _range *C.struct_bladerf_range
err := GetError(C.bladerf_get_frequency_range(bladeRF.ref, C.bladerf_channel(channel), &_range))
@ -425,9 +448,14 @@ func GetFrequencyRange(bladeRF BladeRF, channel Channel) (Range, error) {
return NewRange(_range), nil
}
func SetBandwidth(bladeRF BladeRF, channel Channel, bandwidth uint) (uint, error) {
func (bladeRF *BladeRF) SetBandwidth(channel Channel, bandwidth uint) (uint, error) {
var actual C.bladerf_bandwidth
err := GetError(C.bladerf_set_bandwidth(bladeRF.ref, C.bladerf_channel(channel), C.bladerf_bandwidth(bandwidth), &actual))
err := GetError(C.bladerf_set_bandwidth(
bladeRF.ref,
C.bladerf_channel(channel),
C.bladerf_bandwidth(bandwidth),
&actual),
)
if err != nil {
return 0, err
@ -436,7 +464,7 @@ func SetBandwidth(bladeRF BladeRF, channel Channel, bandwidth uint) (uint, error
return uint(actual), nil
}
func GetBandwidth(bladeRF BladeRF, channel Channel) (uint, error) {
func (bladeRF *BladeRF) GetBandwidth(channel Channel) (uint, error) {
var bandwidth C.bladerf_bandwidth
err := GetError(C.bladerf_get_bandwidth(bladeRF.ref, C.bladerf_channel(channel), &bandwidth))
@ -447,7 +475,7 @@ func GetBandwidth(bladeRF BladeRF, channel Channel) (uint, error) {
return uint(bandwidth), nil
}
func GetBandwidthRange(bladeRF BladeRF, channel Channel) (Range, error) {
func (bladeRF *BladeRF) GetBandwidthRange(channel Channel) (Range, error) {
var bfRange *C.struct_bladerf_range
err := GetError(C.bladerf_get_bandwidth_range(bladeRF.ref, C.bladerf_channel(channel), &bfRange))
@ -458,11 +486,11 @@ func GetBandwidthRange(bladeRF BladeRF, channel Channel) (Range, error) {
return NewRange(bfRange), nil
}
func SetGain(bladeRF BladeRF, channel Channel, gain int) error {
func (bladeRF *BladeRF) SetGain(channel Channel, gain int) error {
return GetError(C.bladerf_set_gain(bladeRF.ref, C.bladerf_channel(channel), C.bladerf_gain(gain)))
}
func GetGain(bladeRF BladeRF, channel Channel) (int, error) {
func (bladeRF *BladeRF) GetGain(channel Channel) (int, error) {
var gain C.bladerf_gain
err := GetError(C.bladerf_get_gain(bladeRF.ref, C.bladerf_channel(channel), &gain))
@ -473,7 +501,7 @@ func GetGain(bladeRF BladeRF, channel Channel) (int, error) {
return int(gain), nil
}
func GetGainStage(bladeRF BladeRF, channel Channel, stage string) (int, error) {
func (bladeRF *BladeRF) GetGainStage(channel Channel, stage string) (int, error) {
val := C.CString(stage)
defer C.free(unsafe.Pointer(val))
@ -487,7 +515,7 @@ func GetGainStage(bladeRF BladeRF, channel Channel, stage string) (int, error) {
return int(gain), nil
}
func GetGainMode(bladeRF BladeRF, channel Channel) (GainMode, error) {
func (bladeRF *BladeRF) GetGainMode(channel Channel) (GainMode, error) {
var mode C.bladerf_gain_mode
err := GetError(C.bladerf_get_gain_mode(bladeRF.ref, C.bladerf_channel(channel), &mode))
@ -499,14 +527,14 @@ func GetGainMode(bladeRF BladeRF, channel Channel) (GainMode, error) {
return GainMode(mode), nil
}
func SetGainStage(bladeRF BladeRF, channel Channel, stage string, gain int) error {
func (bladeRF *BladeRF) SetGainStage(channel Channel, stage string, gain int) error {
val := C.CString(stage)
defer C.free(unsafe.Pointer(val))
return GetError(C.bladerf_set_gain_stage(bladeRF.ref, C.bladerf_channel(channel), val, C.bladerf_gain(gain)))
}
func GetGainStageRange(bladeRF BladeRF, channel Channel, stage string) (Range, error) {
func (bladeRF *BladeRF) GetGainStageRange(channel Channel, stage string) (Range, error) {
val := C.CString(stage)
defer C.free(unsafe.Pointer(val))
@ -520,7 +548,7 @@ func GetGainStageRange(bladeRF BladeRF, channel Channel, stage string) (Range, e
return NewRange(_range), nil
}
func GetGainRange(bladeRF BladeRF, channel Channel) (Range, error) {
func (bladeRF *BladeRF) GetGainRange(channel Channel) (Range, error) {
var _range *C.struct_bladerf_range
err := GetError(C.bladerf_get_gain_range(bladeRF.ref, C.bladerf_channel(channel), &_range))
@ -531,7 +559,7 @@ func GetGainRange(bladeRF BladeRF, channel Channel) (Range, error) {
return NewRange(_range), nil
}
func GetNumberOfGainStages(bladeRF BladeRF, channel Channel) (int, error) {
func (bladeRF *BladeRF) GetNumberOfGainStages(channel Channel) (int, error) {
countOrCode := C.bladerf_get_gain_stages(bladeRF.ref, C.bladerf_channel(channel), nil, 0)
if countOrCode < 0 {
@ -541,13 +569,23 @@ func GetNumberOfGainStages(bladeRF BladeRF, channel Channel) (int, error) {
return int(countOrCode), nil
}
func SetCorrection(bladeRF BladeRF, channel Channel, correction Correction, correctionValue int16) error {
return GetError(C.bladerf_set_correction(bladeRF.ref, C.bladerf_channel(channel), C.bladerf_correction(correction), C.bladerf_correction_value(correctionValue)))
func (bladeRF *BladeRF) SetCorrection(channel Channel, correction Correction, correctionValue int16) error {
return GetError(C.bladerf_set_correction(
bladeRF.ref,
C.bladerf_channel(channel),
C.bladerf_correction(correction),
C.bladerf_correction_value(correctionValue)),
)
}
func GetCorrection(bladeRF BladeRF, channel Channel, correction Correction) (uint16, error) {
func (bladeRF *BladeRF) GetCorrection(channel Channel, correction Correction) (uint16, error) {
var correctionValue C.int16_t
err := GetError(C.bladerf_get_correction(bladeRF.ref, C.bladerf_channel(channel), C.bladerf_correction(correction), &correctionValue))
err := GetError(C.bladerf_get_correction(
bladeRF.ref,
C.bladerf_channel(channel),
C.bladerf_correction(correction),
&correctionValue),
)
if err != nil {
return 0, err
@ -556,11 +594,11 @@ func GetCorrection(bladeRF BladeRF, channel Channel, correction Correction) (uin
return uint16(correctionValue), nil
}
func BackendString(backend Backend) string {
return C.GoString(C.bladerf_backend_str(C.bladerf_backend(backend)))
func (backend *Backend) String() string {
return C.GoString(C.bladerf_backend_str(C.bladerf_backend(*backend)))
}
func GetBoardName(bladeRF BladeRF) string {
func (bladeRF *BladeRF) GetBoardName() string {
return C.GoString(C.bladerf_get_board_name(bladeRF.ref))
}
@ -568,7 +606,7 @@ func SetUSBResetOnOpen(enabled bool) {
C.bladerf_set_usb_reset_on_open(C.bool(enabled))
}
func GetSerial(bladeRF BladeRF) (string, error) {
func (bladeRF *BladeRF) GetSerial() (string, error) {
var serial C.char
err := GetError(C.bladerf_get_serial(bladeRF.ref, &serial))
@ -579,7 +617,7 @@ func GetSerial(bladeRF BladeRF) (string, error) {
return C.GoString(&serial), nil
}
func GetSerialStruct(bladeRF BladeRF) (Serial, error) {
func (bladeRF *BladeRF) GetSerialStruct() (Serial, error) {
var serial C.struct_bladerf_serial
err := GetError(C.bladerf_get_serial_struct(bladeRF.ref, &serial))
@ -590,11 +628,11 @@ func GetSerialStruct(bladeRF BladeRF) (Serial, error) {
return NewSerial(&serial), nil
}
func GetGainStages(bladeRF BladeRF, channel Channel) ([]string, error) {
func (bladeRF *BladeRF) GetGainStages(channel Channel) ([]string, error) {
var stage *C.char
var stages []string
numberOfGainStages, err := GetNumberOfGainStages(bladeRF, channel)
numberOfGainStages, err := bladeRF.GetNumberOfGainStages(channel)
if err != nil {
return nil, err
@ -630,7 +668,7 @@ func GetGainStages(bladeRF BladeRF, channel Channel) ([]string, error) {
return stages, nil
}
func GetGainModes(bladeRF BladeRF, channel Channel) ([]GainModes, error) {
func (bladeRF *BladeRF) GetGainModes(channel Channel) ([]GainModes, error) {
var gainMode *C.struct_bladerf_gain_modes
var gainModes []GainModes
@ -659,7 +697,7 @@ func GetGainModes(bladeRF BladeRF, channel Channel) ([]GainModes, error) {
return gainModes, nil
}
func GetLoopbackModes(bladeRF BladeRF) ([]LoopbackModes, error) {
func (bladeRF *BladeRF) GetLoopbackModes() ([]LoopbackModes, error) {
var loopbackMode *C.struct_bladerf_loopback_modes
var loopbackModes []LoopbackModes
@ -680,7 +718,9 @@ func GetLoopbackModes(bladeRF BladeRF) ([]LoopbackModes, error) {
for i := 0; i < count; i++ {
loopbackModes = append(loopbackModes, NewLoopbackModes(
(*C.struct_bladerf_loopback_modes)(unsafe.Pointer(uintptr(unsafe.Pointer(loopbackMode))+(uintptr(i)*size))),
(*C.struct_bladerf_loopback_modes)(
unsafe.Pointer(uintptr(unsafe.Pointer(loopbackMode))+(uintptr(i)*size)),
),
))
}
}
@ -688,21 +728,26 @@ func GetLoopbackModes(bladeRF BladeRF) ([]LoopbackModes, error) {
return loopbackModes, nil
}
func SetGainMode(bladeRF BladeRF, channel Channel, mode GainMode) error {
func (bladeRF *BladeRF) SetGainMode(channel Channel, mode GainMode) error {
return GetError(C.bladerf_set_gain_mode(bladeRF.ref, C.bladerf_channel(channel), C.bladerf_gain_mode(mode)))
}
func EnableModule(bladeRF BladeRF, channel Channel) error {
func (bladeRF *BladeRF) EnableModule(channel Channel) error {
return GetError(C.bladerf_enable_module(bladeRF.ref, C.bladerf_channel(channel), true))
}
func DisableModule(bladeRF BladeRF, channel Channel) error {
func (bladeRF *BladeRF) DisableModule(channel Channel) error {
return GetError(C.bladerf_enable_module(bladeRF.ref, C.bladerf_channel(channel), false))
}
func TriggerInit(bladeRF BladeRF, channel Channel, signal TriggerSignal) (Trigger, error) {
func (bladeRF *BladeRF) TriggerInit(channel Channel, signal TriggerSignal) (Trigger, error) {
var trigger C.struct_bladerf_trigger
err := GetError(C.bladerf_trigger_init(bladeRF.ref, C.bladerf_channel(channel), C.bladerf_trigger_signal(signal), &trigger))
err := GetError(C.bladerf_trigger_init(
bladeRF.ref,
C.bladerf_channel(channel),
C.bladerf_trigger_signal(signal),
&trigger),
)
if err != nil {
return Trigger{}, err
@ -711,22 +756,30 @@ func TriggerInit(bladeRF BladeRF, channel Channel, signal TriggerSignal) (Trigge
return Trigger{ref: &trigger}, nil
}
func TriggerArm(bladeRF BladeRF, trigger Trigger, arm bool, resV1 uint64, resV2 uint64) error {
func (bladeRF *BladeRF) TriggerArm(trigger Trigger, arm bool, resV1 uint64, resV2 uint64) error {
return GetError(C.bladerf_trigger_arm(bladeRF.ref, trigger.ref, C.bool(arm), C.uint64_t(resV1), C.uint64_t(resV2)))
}
func TriggerFire(bladeRF BladeRF, trigger Trigger) error {
func (bladeRF *BladeRF) TriggerFire(trigger Trigger) error {
return GetError(C.bladerf_trigger_fire(bladeRF.ref, trigger.ref))
}
func TriggerState(bladeRF BladeRF, trigger Trigger) (bool, bool, bool, uint64, uint64, error) {
func (bladeRF *BladeRF) TriggerState(trigger Trigger) (bool, bool, bool, uint64, uint64, error) {
var isArmed C.bool
var hasFired C.bool
var fireRequested C.bool
var resV1 C.uint64_t
var resV2 C.uint64_t
err := GetError(C.bladerf_trigger_state(bladeRF.ref, trigger.ref, &isArmed, &hasFired, &fireRequested, &resV1, &resV2))
err := GetError(C.bladerf_trigger_state(
bladeRF.ref,
trigger.ref,
&isArmed,
&hasFired,
&fireRequested,
&resV1,
&resV2),
)
if err != nil {
return false, false, false, 0, 0, err
@ -735,7 +788,11 @@ func TriggerState(bladeRF BladeRF, trigger Trigger) (bool, bool, bool, uint64, u
return bool(isArmed), bool(hasFired), bool(fireRequested), uint64(resV1), uint64(resV2), nil
}
func SyncRX(bladeRF BladeRF, bufferSize uintptr) ([]int16, error) {
func (trigger *Trigger) SetRole(role TriggerRole) {
(*trigger.ref).role = C.bladerf_trigger_role(role)
}
func (bladeRF *BladeRF) SyncRX(bufferSize uintptr) ([]int16, error) {
var metadata C.struct_bladerf_metadata
start := C.malloc(C.size_t(C.sizeof_int16_t * bufferSize * 2 * 1))
err := GetError(C.bladerf_sync_rx(bladeRF.ref, start, C.uint(bufferSize), &metadata, 32))
@ -754,9 +811,13 @@ func SyncRX(bladeRF BladeRF, bufferSize uintptr) ([]int16, error) {
return results, nil
}
func InitStream(bladeRF BladeRF,
func (bladeRF *BladeRF) InitStream(
format Format,
numBuffers int, samplesPerBuffer int, numTransfers int, callback func(data []int16)) (Stream, error) {
numBuffers int,
samplesPerBuffer int,
numTransfers int,
callback func(data []int16),
) (Stream, error) {
var buffers *unsafe.Pointer
var rxStream *C.struct_bladerf_stream
@ -781,11 +842,11 @@ func InitStream(bladeRF BladeRF,
return stream, nil
}
func DeInitStream(stream Stream) {
func (stream *Stream) DeInit() {
C.bladerf_deinit_stream(stream.ref)
}
func GetStreamTimeout(bladeRF BladeRF, direction Direction) (uint, error) {
func (bladeRF *BladeRF) GetStreamTimeout(direction Direction) (uint, error) {
var timeout C.uint
err := GetError(C.bladerf_get_stream_timeout(bladeRF.ref, C.bladerf_direction(direction), &timeout))
@ -796,23 +857,38 @@ func GetStreamTimeout(bladeRF BladeRF, direction Direction) (uint, error) {
return uint(timeout), err
}
func SetStreamTimeout(bladeRF BladeRF, direction Direction, timeout uint) error {
func (bladeRF *BladeRF) SetStreamTimeout(direction Direction, timeout uint) error {
return GetError(C.bladerf_set_stream_timeout(bladeRF.ref, C.bladerf_direction(direction), C.uint(timeout)))
}
func SyncConfig(bladeRF BladeRF, layout ChannelLayout, format Format, numBuffers uint, bufferSize uint, numTransfers uint, timeout uint) error {
return GetError(C.bladerf_sync_config(bladeRF.ref, C.bladerf_channel_layout(layout), C.bladerf_format(format), C.uint(numBuffers), C.uint(bufferSize), C.uint(numTransfers), C.uint(timeout)))
func (bladeRF *BladeRF) SyncConfig(
layout ChannelLayout,
format Format,
numBuffers uint,
bufferSize uint,
numTransfers uint,
timeout uint,
) error {
return GetError(C.bladerf_sync_config(
bladeRF.ref,
C.bladerf_channel_layout(layout),
C.bladerf_format(format),
C.uint(numBuffers),
C.uint(bufferSize),
C.uint(numTransfers),
C.uint(timeout)),
)
}
func StartStream(stream Stream, layout ChannelLayout) error {
func (stream *Stream) Start(layout ChannelLayout) error {
return GetError(C.bladerf_stream(stream.ref, C.bladerf_channel_layout(layout)))
}
func AttachExpansionBoard(bladeRF BladeRF, expansionBoard ExpansionBoard) error {
func (bladeRF *BladeRF) AttachExpansionBoard(expansionBoard ExpansionBoard) error {
return GetError(C.bladerf_expansion_attach(bladeRF.ref, C.bladerf_xb(expansionBoard)))
}
func GetAttachedExpansionBoard(bladeRF BladeRF) (ExpansionBoard, error) {
func (bladeRF *BladeRF) GetAttachedExpansionBoard() (ExpansionBoard, error) {
var expansionBoard C.bladerf_xb
err := GetError(C.bladerf_expansion_get_attached(bladeRF.ref, &expansionBoard))
@ -822,3 +898,44 @@ func GetAttachedExpansionBoard(bladeRF BladeRF) (ExpansionBoard, error) {
return ExpansionBoard(expansionBoard), nil
}
func (bladeRF *BladeRF) SetGetVctcxoTamerMode(mode VctcxoTamerMode) error {
return GetError(C.bladerf_set_vctcxo_tamer_mode(bladeRF.ref, C.bladerf_vctcxo_tamer_mode(mode)))
}
func (bladeRF *BladeRF) GetVctcxoTamerMode() (VctcxoTamerMode, error) {
var mode C.bladerf_vctcxo_tamer_mode
err := GetError(C.bladerf_get_vctcxo_tamer_mode(bladeRF.ref, &mode))
if err != nil {
return 0, err
}
return VctcxoTamerMode(mode), nil
}
func (bladeRF *BladeRF) GetVctcxoTrim() (uint16, error) {
var trim C.uint16_t
err := GetError(C.bladerf_get_vctcxo_trim(bladeRF.ref, &trim))
if err != nil {
return 0, err
}
return uint16(trim), nil
}
func (bladeRF *BladeRF) TrimDacRead() (uint16, error) {
var val C.uint16_t
err := GetError(C.bladerf_trim_dac_read(bladeRF.ref, &val))
if err != nil {
return 0, err
}
return uint16(val), nil
}
func (bladeRF *BladeRF) TrimDacWrite(val uint16) error {
return GetError(C.bladerf_trim_dac_write(bladeRF.ref, C.uint16_t(val)))
}

View File

@ -56,12 +56,12 @@ func GetFinalDataString(input []int16) string {
}
func TestBackendSTR(t *testing.T) {
x := BackendString(BackendLibUSB)
y := BackendString(BackendDummy)
z := BackendString(BackendAny)
a := BackendString(BackendCypress)
b := BackendString(BackendLinux)
fmt.Println(x, y, z, a, b)
x := BackendLibUSB
y := BackendDummy
z := BackendAny
a := BackendCypress
b := BackendLinux
fmt.Println(x.String(), y.String(), z.String(), a.String(), b.String())
}
func TestSetUSBResetOnOpen(t *testing.T) {
@ -79,10 +79,10 @@ func TestGetSerial(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
serial, _ := GetSerial(rf)
serial, _ := rf.GetSerial()
fmt.Println(serial)
}
@ -96,10 +96,10 @@ func TestGetSerialStruct(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
serial, _ := GetSerialStruct(rf)
serial, _ := rf.GetSerialStruct()
fmt.Print(serial)
}
@ -113,10 +113,10 @@ func TestGetFpgaSize(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
size, _ := GetFpgaSize(rf)
size, _ := rf.GetFpgaSize()
fmt.Print(size)
}
@ -130,10 +130,10 @@ func TestGetFpgaSource(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
source, _ := GetFpgaSource(rf)
source, _ := rf.GetFpgaSource()
fmt.Print(source)
}
@ -147,10 +147,10 @@ func TestGetDeviceSpeed(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
speed := GetDeviceSpeed(rf)
speed := rf.GetDeviceSpeed()
fmt.Print(speed)
}
@ -164,10 +164,10 @@ func TestGetBoardName(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
name := GetBoardName(rf)
name := rf.GetBoardName()
fmt.Print(name)
}
@ -181,10 +181,10 @@ func TestGetRationalSampleRate(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
rate, _ := GetRationalSampleRate(rf, ChannelRx(1))
rate, _ := rf.GetRationalSampleRate(ChannelRx(1))
fmt.Print(rate)
}
@ -198,10 +198,10 @@ func TestGetFpgaBytes(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
bytes, _ := GetFpgaBytes(rf)
bytes, _ := rf.GetFpgaBytes()
fmt.Print(bytes)
}
@ -215,10 +215,10 @@ func TestGetFpgaFlashSize(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
size, guess, err := GetFpgaFlashSize(rf)
size, guess, err := rf.GetFpgaFlashSize()
if err != nil {
panic(err)
@ -238,10 +238,10 @@ func TestGetFirmwareVersion(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
version, err := GetFirmwareVersion(rf)
version, err := rf.GetFirmwareVersion()
if err != nil {
panic(err)
@ -260,10 +260,10 @@ func TestGetFpgaVersion(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
version, _ := GetFpgaVersion(rf)
version, _ := rf.GetFpgaVersion()
fmt.Print(version.describe)
}
@ -277,10 +277,10 @@ func TestGetLoopbackModes(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
modes, _ := GetLoopbackModes(rf)
modes, _ := rf.GetLoopbackModes()
for _, v := range modes {
fmt.Printf("%s\n\n", v.name)
}
@ -296,18 +296,18 @@ func TestGetQuickTune(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
channel := ChannelRx(1)
quickTune, err := GetQuickTune(rf, channel)
quickTune, err := rf.GetQuickTune(channel)
if err != nil {
panic(err)
}
err = ScheduleReTune(rf, channel, ReTuneNow, 96600000, quickTune)
err = rf.ScheduleReTune(channel, ReTuneNow, 96600000, quickTune)
if err != nil {
panic(err)
@ -324,10 +324,10 @@ func TestExpansionBoard(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
board, err := GetAttachedExpansionBoard(rf)
board, err := rf.GetAttachedExpansionBoard()
if err != nil {
panic(err)
@ -350,13 +350,13 @@ func TestTrigger(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
channel := ChannelRx(0)
signal := TriggerSignalJ714
triggerMaster, err := TriggerInit(rf, channel, signal)
triggerMaster, err := rf.TriggerInit(channel, signal)
if err != nil {
panic(err)
@ -364,7 +364,7 @@ func TestTrigger(t *testing.T) {
triggerMaster.SetRole(TriggerRoleMaster)
triggerSlave, err := TriggerInit(rf, channel, signal)
triggerSlave, err := rf.TriggerInit(channel, signal)
if err != nil {
panic(err)
@ -372,19 +372,19 @@ func TestTrigger(t *testing.T) {
triggerSlave.SetRole(TriggerRoleSlave)
err = TriggerArm(rf, triggerMaster, true, 0, 0)
err = rf.TriggerArm(triggerMaster, true, 0, 0)
if err != nil {
panic(err)
}
err = TriggerFire(rf, triggerMaster)
err = rf.TriggerFire(triggerMaster)
if err != nil {
panic(err)
}
a, b, c, x, y, err := TriggerState(rf, triggerMaster)
a, b, c, x, y, err := rf.TriggerState(triggerMaster)
if err != nil {
panic(err)
@ -403,10 +403,10 @@ func TestIsFpgaConfigured(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
isConfigured, err := IsFpgaConfigured(rf)
isConfigured, err := rf.IsFpgaConfigured()
if err != nil {
panic(err)
@ -418,50 +418,51 @@ func TestIsFpgaConfigured(t *testing.T) {
func TestBladeRF(t *testing.T) {
log.SetVerbosity(log.Error)
PrintVersion(GetVersion())
version := GetVersion()
version.Print()
bootloaders, _ := GetBootloaderList()
fmt.Printf("Bootloaders Len: %d\n", len(bootloaders))
devices, _ := GetDeviceList()
fmt.Printf("Devices Len: %d\n", len(devices))
rf, _ := OpenWithDeviceInfo(devices[0])
_ = LoadFpga(rf, "/Users/erayarslan/Downloads/hostedxA4-latest.rbf")
Close(rf)
rf, _ := devices[0].Open()
_ = rf.LoadFpga("/Users/erayarslan/Downloads/hostedxA4-latest.rbf")
rf.Close()
rf, _ = Open()
info, _ := GetDeviceInfo(rf)
Close(rf)
h, _ := GetDeviceInfo(rf)
out, _ := OpenWithDeviceInfo(h)
Close(out)
info, _ := rf.GetDeviceInfo()
rf.Close()
h, _ := rf.GetDeviceInfo()
out, _ := h.Open()
out.Close()
c1, _ := Open()
Close(c1)
c1.Close()
c2, _ := OpenWithDeviceIdentifier("*:serial=" + info.serial)
Close(c2)
c2.Close()
o1, _ := GetDeviceInfoFromString("*:serial=" + info.serial)
out2, _ := OpenWithDeviceInfo(o1)
Close(out2)
out2, _ := o1.Open()
out2.Close()
g, _ := GetDeviceInfo(rf)
result := DeviceInfoMatches(g, g)
g, _ := rf.GetDeviceInfo()
result := g.DeviceInfoMatches(g)
fmt.Println("---------")
fmt.Println(result)
fmt.Println("---------")
g0, _ := GetDeviceInfo(rf)
result = DeviceStringMatches("*:serial="+info.serial, g0)
g0, _ := rf.GetDeviceInfo()
result = g0.DeviceStringMatches("*:serial=" + info.serial)
fmt.Println("---------")
fmt.Println(result)
fmt.Println("---------")
rf, _ = Open()
err := EnableModule(rf, ChannelRx(1))
err := rf.EnableModule(ChannelRx(1))
if err != nil {
fmt.Println(err)
}
_, _ = InitStream(rf, FormatSc16Q11, 16, audioBufferSize, 8, cb)
_, _ = rf.InitStream(FormatSc16Q11, 16, audioBufferSize, 8, cb)
// _ = StartStream(stream, RX_X1)
}
@ -475,14 +476,14 @@ func TestSetGainStage(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
stages, _ := GetGainStages(rf, ChannelRx(1))
stages, _ := rf.GetGainStages(ChannelRx(1))
fmt.Println(len(stages))
bfRange, _ := GetGainStageRange(rf, ChannelRx(1), stages[0])
_ = SetGainStage(rf, ChannelRx(1), stages[0], int(bfRange.max))
gain, _ := GetGainStage(rf, ChannelRx(1), stages[0])
bfRange, _ := rf.GetGainStageRange(ChannelRx(1), stages[0])
_ = rf.SetGainStage(ChannelRx(1), stages[0], int(bfRange.max))
gain, _ := rf.GetGainStage(ChannelRx(1), stages[0])
fmt.Println(gain)
}
@ -512,18 +513,18 @@ func TestStream(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
_ = SetFrequency(rf, channel, 96600000)
_range, _ := GetSampleRateRange(rf, channel)
_ = rf.SetFrequency(channel, 96600000)
_range, _ := rf.GetSampleRateRange(channel)
fmt.Printf("Min: %d, Max: %d, Step: %d\n", _range.min, _range.max, _range.step)
_, _ = SetSampleRate(rf, channel, 4e6)
_ = SyncConfig(rf, RxX2, FormatSc16Q11, 16, audioBufferSize, 8, 32)
actual, _ := SetBandwidth(rf, channel, 240000)
_, _ = rf.SetSampleRate(channel, 4e6)
_ = rf.SyncConfig(RxX2, FormatSc16Q11, 16, audioBufferSize, 8, 32)
actual, _ := rf.SetBandwidth(channel, 240000)
fmt.Println(actual)
_ = EnableModule(rf, channel)
_ = SetGainMode(rf, channel, GainModeHybridAgc)
_ = rf.EnableModule(channel)
_ = rf.SetGainMode(channel, GainModeHybridAgc)
demodulator = demodcore.MakeWBFMDemodulator(uint32(2e6), 80e3, 48000)
@ -541,7 +542,7 @@ func TestStream(t *testing.T) {
go func() {
for {
data, _ := SyncRX(rf, audioBufferSize)
data, _ := rf.SyncRX(audioBufferSize)
out := demodulator.Work(GetFinalData(data))
if out != nil {
@ -584,10 +585,10 @@ func TestGetGainModes(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
_, _ = GetGainModes(rf, ChannelRx(1))
_, _ = rf.GetGainModes(ChannelRx(1))
}
func TestGetGainRange(t *testing.T) {
@ -600,10 +601,10 @@ func TestGetGainRange(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
bfRange, _ := GetGainRange(rf, ChannelRx(1))
bfRange, _ := rf.GetGainRange(ChannelRx(1))
fmt.Println(bfRange.max)
}
@ -618,18 +619,18 @@ func TestGPSData(t *testing.T) {
return
}
rf, _ := OpenWithDeviceInfo(devices[0])
defer Close(rf)
rf, _ := devices[0].Open()
defer rf.Close()
_ = SetFrequency(rf, channel, 1525420000)
_ = SyncConfig(rf, RxX2, FormatSc16Q11, 16, audioBufferSize, 8, 32)
_, _ = SetSampleRate(rf, channel, 2600000)
_, _ = SetBandwidth(rf, channel, 2500000)
_ = SetGainMode(rf, channel, GainModeHybridAgc)
_ = EnableModule(rf, channel)
_ = rf.SetFrequency(channel, 1525420000)
_ = rf.SyncConfig(RxX2, FormatSc16Q11, 16, audioBufferSize, 8, 32)
_, _ = rf.SetSampleRate(channel, 2600000)
_, _ = rf.SetBandwidth(channel, 2500000)
_ = rf.SetGainMode(channel, GainModeHybridAgc)
_ = rf.EnableModule(channel)
for {
data, _ := SyncRX(rf, audioBufferSize)
data, _ := rf.SyncRX(audioBufferSize)
out := GetFinalDataString(data)
fmt.Println(out)
}
@ -654,28 +655,28 @@ func TestAsyncStream(t *testing.T) {
return
}
rf, err := OpenWithDeviceInfo(devices[0])
rf, err := devices[0].Open()
if err != nil {
panic(err)
}
defer Close(rf)
defer rf.Close()
_ = SetFrequency(rf, channel, 96600000)
_, _ = SetSampleRate(rf, channel, 4e6)
_, _ = SetBandwidth(rf, channel, 240000)
_ = SetGainMode(rf, channel, GainModeHybridAgc)
_ = EnableModule(rf, channel)
_ = rf.SetFrequency(channel, 96600000)
_, _ = rf.SetSampleRate(channel, 4e6)
_, _ = rf.SetBandwidth(channel, 240000)
_ = rf.SetGainMode(channel, GainModeHybridAgc)
_ = rf.EnableModule(channel)
rxStream, err := InitStream(rf, FormatSc16Q11, 16, audioBufferSize, 8, cb)
rxStream, err := rf.InitStream(FormatSc16Q11, 16, audioBufferSize, 8, cb)
if err != nil {
panic(err)
}
defer DeInitStream(rxStream)
defer rxStream.DeInit()
_ = SetStreamTimeout(rf, Rx, 32)
timeout, _ := GetStreamTimeout(rf, Rx)
_ = rf.SetStreamTimeout(Rx, 32)
timeout, _ := rf.GetStreamTimeout(Rx)
println(timeout)
demodulator = demodcore.MakeWBFMDemodulator(uint32(2e6), 80e3, 48000)
@ -693,7 +694,7 @@ func TestAsyncStream(t *testing.T) {
_ = audioStream.Start()
go func() {
err = StartStream(rxStream, RxX2)
err = rxStream.Start(RxX2)
if err != nil {
panic(err)
}

View File

@ -22,6 +22,7 @@ type RxMux int
type TriggerRole int
type TriggerSignal int
type ExpansionBoard int
type VctcxoTamerMode int
const (
BackendAny Backend = C.BLADERF_BACKEND_ANY
@ -157,3 +158,10 @@ const (
ExpansionBoard200 ExpansionBoard = C.BLADERF_XB_200
ExpansionBoard300 ExpansionBoard = C.BLADERF_XB_300
)
const (
VctcxoTamerModeInvalid VctcxoTamerMode = C.BLADERF_VCTCXO_TAMER_INVALID
VctcxoTamerModeDisabled VctcxoTamerMode = C.BLADERF_VCTCXO_TAMER_DISABLED
VctcxoTamerMode1Pps VctcxoTamerMode = C.BLADERF_VCTCXO_TAMER_1_PPS
VctcxoTamerMode10Mhz VctcxoTamerMode = C.BLADERF_VCTCXO_TAMER_10_MHZ
)

View File

@ -126,10 +126,6 @@ type Trigger struct {
ref *C.struct_bladerf_trigger
}
func (trigger *Trigger) SetRole(role TriggerRole) {
(*trigger.ref).role = C.bladerf_trigger_role(role)
}
type LoopbackModes struct {
ref *C.struct_bladerf_loopback_modes
name string