func NewFakeGPIO(gpionum uint, direction int) (gpio *FakeGPIO) {
	return NewFakeNamedGPIO(fmt.Sprintf("FakeGPIO(%d)", gpionum), direction, nil)
}
----------- Fake GPIO for Testing ----------------
same signature as all the other New*GPIO implementations.
logs to FakeGPIODefaultLogTarget_ which is an exported field and thus you can set it to point to the log.Logger of your choice
package bbhw
import (
	"fmt"
	"log"
)
type FakeGPIO struct {
	name        string
	dir         int
	value       bool
	activelow   bool
	logTarget   *log.Logger
	connectedTo []*FakeGPIO
}
type FakeGPIONullWriter struct{}
func (n *FakeGPIONullWriter) Write(p []byte) (int, error) { return len(p), nil }
var FakeGPIODefaultLogTarget_ *log.Logger
func init() {
	FakeGPIODefaultLogTarget_ = log.New(&FakeGPIONullWriter{}, "", 0)
}