func (v *VBPTC) AddBurst(bits []byte) error {
	if v.matrix == nil {
		return errors.New("vbptc: matrix can't be nil")
	}
	var free = v.freeSpace()
	if free == 0 {
		return errors.New("vbptc: no free space in matrix")
	}
	var adds = len(bits)
	if adds > free {
		adds = free
	}
	for i := 0; i < adds; i++ {
		v.matrix[v.col+v.row*16] = bits[i]
		v.row++
		if v.row == v.expectedRows {
			v.col++
			v.row = 0
		}
	}
	return nil
}
AddBurst adds the embedded signalling data to the matrix.
package vbptc
import (
	"errors"
	"fmt"
)
var (
	hamming_16_11_generator_matrix = []byte{
		1, 0, 0, 1, 1,
		1, 1, 0, 1, 0,
		1, 1, 1, 1, 1,
		1, 1, 1, 0, 0,
		0, 1, 1, 1, 0,
		1, 0, 1, 0, 1,
		0, 1, 0, 1, 1,
		1, 0, 1, 1, 0,
		1, 1, 0, 0, 1,
		0, 1, 1, 0, 1,
		0, 0, 1, 1, 1,
		1, 0, 0, 0, 0,
		0, 1, 0, 0, 0,
		0, 0, 1, 0, 0,
		0, 0, 0, 1, 0,
		0, 0, 0, 0, 1,
	}
)
type VBPTC struct {
	matrix       []byte
	row, col     uint8
	expectedRows uint8
}
func New(expectedRows uint8) *VBPTC {
	return &VBPTC{
		matrix:       make([]byte, int(expectedRows)*16),
		expectedRows: expectedRows,
	}
}
func (v *VBPTC) freeSpace() int {
	var size = int(v.expectedRows) * 16
	var used = int(v.expectedRows)*int(v.col) + int(v.row)
	return size - used
}