kopia lustrzana https://github.com/cyoung/stratux
Input channel. Output in same format as dump978 cmdline tool.
rodzic
f7505e10a6
commit
34e71f16db
10
dump978.go
10
dump978.go
|
@ -27,6 +27,9 @@ import "unsafe"
|
|||
// Current version.
|
||||
var PackageVersion = "v0.1"
|
||||
|
||||
// InChan is a buffered input channel for raw data.
|
||||
var InChan = make(chan []byte, 100)
|
||||
|
||||
type UserCbT func(C.char, *C.uint8_t, C.int)
|
||||
|
||||
// Dump978Init must be the first function called in this package.
|
||||
|
@ -38,3 +41,10 @@ func Dump978Init() {
|
|||
func ProcessData(buf []byte) {
|
||||
C.process_data((*C.char)(unsafe.Pointer(&buf[0])), C.int(len(buf)))
|
||||
}
|
||||
|
||||
func ProcessDataFromChannel() {
|
||||
for {
|
||||
inData := <-InChan
|
||||
ProcessData(inData)
|
||||
}
|
||||
}
|
16
exports.go
16
exports.go
|
@ -7,6 +7,7 @@
|
|||
package dump978
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
"unsafe"
|
||||
)
|
||||
|
@ -17,21 +18,24 @@ import (
|
|||
*/
|
||||
import "C"
|
||||
|
||||
// outChan is a buffered output channel for demodulated data.
|
||||
var OutChan = make(chan []byte, 100)
|
||||
// OutChan is a buffered output channel for demodulated data.
|
||||
var OutChan = make(chan string, 100)
|
||||
|
||||
//export dump978Cb
|
||||
func dump978Cb(updown C.char, data *C.uint8_t, length C.int) {
|
||||
outData := make([]byte, length+1)
|
||||
// c buffer to go slice without copying
|
||||
var buf []byte
|
||||
b := (*reflect.SliceHeader)((unsafe.Pointer(&data)))
|
||||
|
||||
b := (*reflect.SliceHeader)((unsafe.Pointer(&buf)))
|
||||
b.Cap = int(length)
|
||||
b.Len = int(length)
|
||||
b.Data = uintptr(unsafe.Pointer(data))
|
||||
|
||||
// copy incoming to outgoing
|
||||
copy(outData, buf[1:])
|
||||
outData[0] = byte(updown)
|
||||
outData := string(updown)
|
||||
for i := 0; i < int(length); i++ {
|
||||
outData += fmt.Sprintf("%02x", buf[i])
|
||||
}
|
||||
|
||||
OutChan <- outData
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue