gobot.io/x/gobot@v1.16.0/drivers/gpio/helpers_test.go (about)

     1  package gpio
     2  
     3  import "sync"
     4  
     5  type gpioTestBareAdaptor struct{}
     6  
     7  func (t *gpioTestBareAdaptor) Connect() (err error)  { return }
     8  func (t *gpioTestBareAdaptor) Finalize() (err error) { return }
     9  func (t *gpioTestBareAdaptor) Name() string          { return "" }
    10  func (t *gpioTestBareAdaptor) SetName(n string)      {}
    11  
    12  type gpioTestDigitalWriter struct {
    13  	gpioTestBareAdaptor
    14  }
    15  
    16  func (t *gpioTestDigitalWriter) DigitalWrite(string, byte) (err error) { return }
    17  
    18  type gpioTestAdaptor struct {
    19  	name                    string
    20  	port                    string
    21  	mtx                     sync.Mutex
    22  	testAdaptorDigitalWrite func(pin string, val byte) (err error)
    23  	testAdaptorServoWrite   func(pin string, val byte) (err error)
    24  	testAdaptorPwmWrite     func(pin string, val byte) (err error)
    25  	testAdaptorAnalogRead   func(ping string) (val int, err error)
    26  	testAdaptorDigitalRead  func(ping string) (val int, err error)
    27  }
    28  
    29  func (t *gpioTestAdaptor) TestAdaptorDigitalWrite(f func(pin string, val byte) (err error)) {
    30  	t.mtx.Lock()
    31  	defer t.mtx.Unlock()
    32  	t.testAdaptorDigitalWrite = f
    33  }
    34  func (t *gpioTestAdaptor) TestAdaptorServoWrite(f func(pin string, val byte) (err error)) {
    35  	t.mtx.Lock()
    36  	defer t.mtx.Unlock()
    37  	t.testAdaptorServoWrite = f
    38  }
    39  func (t *gpioTestAdaptor) TestAdaptorPwmWrite(f func(pin string, val byte) (err error)) {
    40  	t.mtx.Lock()
    41  	defer t.mtx.Unlock()
    42  	t.testAdaptorPwmWrite = f
    43  }
    44  func (t *gpioTestAdaptor) TestAdaptorAnalogRead(f func(pin string) (val int, err error)) {
    45  	t.mtx.Lock()
    46  	defer t.mtx.Unlock()
    47  	t.testAdaptorAnalogRead = f
    48  }
    49  func (t *gpioTestAdaptor) TestAdaptorDigitalRead(f func(pin string) (val int, err error)) {
    50  	t.mtx.Lock()
    51  	defer t.mtx.Unlock()
    52  	t.testAdaptorDigitalRead = f
    53  }
    54  
    55  func (t *gpioTestAdaptor) ServoWrite(pin string, val byte) (err error) {
    56  	t.mtx.Lock()
    57  	defer t.mtx.Unlock()
    58  	return t.testAdaptorServoWrite(pin, val)
    59  }
    60  func (t *gpioTestAdaptor) PwmWrite(pin string, val byte) (err error) {
    61  	t.mtx.Lock()
    62  	defer t.mtx.Unlock()
    63  	return t.testAdaptorPwmWrite(pin, val)
    64  }
    65  func (t *gpioTestAdaptor) AnalogRead(pin string) (val int, err error) {
    66  	t.mtx.Lock()
    67  	defer t.mtx.Unlock()
    68  	return t.testAdaptorAnalogRead(pin)
    69  }
    70  func (t *gpioTestAdaptor) DigitalRead(pin string) (val int, err error) {
    71  	t.mtx.Lock()
    72  	defer t.mtx.Unlock()
    73  	return t.testAdaptorDigitalRead(pin)
    74  }
    75  func (t *gpioTestAdaptor) DigitalWrite(pin string, val byte) (err error) {
    76  	t.mtx.Lock()
    77  	defer t.mtx.Unlock()
    78  	return t.testAdaptorDigitalWrite(pin, val)
    79  }
    80  func (t *gpioTestAdaptor) Connect() (err error)  { return }
    81  func (t *gpioTestAdaptor) Finalize() (err error) { return }
    82  func (t *gpioTestAdaptor) Name() string          { return t.name }
    83  func (t *gpioTestAdaptor) SetName(n string)      { t.name = n }
    84  func (t *gpioTestAdaptor) Port() string          { return t.port }
    85  
    86  func newGpioTestAdaptor() *gpioTestAdaptor {
    87  	return &gpioTestAdaptor{
    88  		port: "/dev/null",
    89  		testAdaptorDigitalWrite: func(pin string, val byte) (err error) {
    90  			return nil
    91  		},
    92  		testAdaptorServoWrite: func(pin string, val byte) (err error) {
    93  			return nil
    94  		},
    95  		testAdaptorPwmWrite: func(pin string, val byte) (err error) {
    96  			return nil
    97  		},
    98  		testAdaptorAnalogRead: func(pin string) (val int, err error) {
    99  			return 99, nil
   100  		},
   101  		testAdaptorDigitalRead: func(pin string) (val int, err error) {
   102  			return 1, nil
   103  		},
   104  	}
   105  }