예제 #1
0
func bitstream(stream string) []datatypes.Bit {
	bits := make([]datatypes.Bit, 32)
	for i, c := range stream {
		if string(c) == "1" {
			bits[i] = datatypes.Bit(true)
		} else {
			bits[i] = datatypes.Bit(false)
		}
	}
	return bits
}
예제 #2
0
파일: util.go 프로젝트: dhogborg/go-pocsag
// StreamToBits converts samples to bits using the bitlength specified.
// Observe that POCSAG signifies a high bit with a low frequency.
func StreamToBits(stream []int16, bitlength int) []datatypes.Bit {

	bits := make([]datatypes.Bit, (len(stream)/bitlength)+1)
	b := 0

	for a := 0; a < len(stream); a += bitlength {

		sample := stream[a]
		if a > 2 && a < len(stream)-2 {
			// let the samples before and after influence our sample, to prevent spike errors
			sample = (stream[a-1] / 2) + stream[a] + (stream[a+1] / 2)
		}

		bits[b] = datatypes.Bit((sample < 0))
		b += 1

	}

	return bits
}