Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
ranjib committed Dec 24, 2024
1 parent 4de86d9 commit 285e5de
Show file tree
Hide file tree
Showing 5 changed files with 114 additions and 117 deletions.
35 changes: 35 additions & 0 deletions hal/driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package hal

import (
"fmt"
"sort"

"github.com/reef-pi/hal"
"github.com/reef-pi/rpi/pwm"
Expand Down Expand Up @@ -45,3 +46,37 @@ func (d *driver) Pins(cap hal.Capability) ([]hal.Pin, error) {
return nil, fmt.Errorf("Unsupported capability:%s", cap.String())
}
}

func (r *driver) DigitalInputPins() []hal.DigitalInputPin {
var pins []hal.DigitalInputPin
for _, pin := range r.pins {
pins = append(pins, pin)
}
sort.Slice(pins, func(i, j int) bool { return pins[i].Name() < pins[j].Name() })
return pins
}

func (r *driver) DigitalInputPin(p int) (hal.DigitalInputPin, error) {
pin, ok := r.pins[p]
if !ok {
return nil, fmt.Errorf("pin %d unknown", p)
}
return pin, nil
}

func (r *driver) DigitalOutputPins() []hal.DigitalOutputPin {
var pins []hal.DigitalOutputPin
for _, pin := range r.pins {
pins = append(pins, pin)
}
sort.Slice(pins, func(i, j int) bool { return pins[i].Name() < pins[j].Name() })
return pins
}

func (r *driver) DigitalOutputPin(p int) (hal.DigitalOutputPin, error) {
pin, ok := r.pins[p]
if !ok {
return nil, fmt.Errorf("pin %d unknown", p)
}
return pin, nil
}
2 changes: 1 addition & 1 deletion hal/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ func (f *rpiFactory) Metadata() hal.Metadata {
return f.meta
}

func (f *rpiFactory) NewDriver(parameters map[string]interface{}, hardwareResources interface{}) (hal.Driver, error) {
func (f *rpiFactory) NewDriver(parameters map[string]interface{}, _ interface{}) (hal.Driver, error) {
if valid, failures := f.ValidateParameters(parameters); !valid {
return nil, errors.New(hal.ToErrorString(failures))
}
Expand Down
116 changes: 0 additions & 116 deletions hal/gpio.go

This file was deleted.

46 changes: 46 additions & 0 deletions hal/pin.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package hal

import "fmt"

type pin struct {
number int
name string
lastState bool

digitalPin DigitalPin
}

func (p *pin) Name() string {
return p.name
}
func (p *pin) Number() int {
return p.number
}

func (p *pin) Close() error {
return p.digitalPin.Close()
}

func (p *pin) Read() (bool, error) {
if err := p.digitalPin.SetDirection(false); err != nil {
return false, fmt.Errorf("can't read input from pin %d: %v", p.number, err)
}
v, err := p.digitalPin.Read()
return v == 1, err
}

func (p *pin) Write(state bool) error {
if err := p.digitalPin.SetDirection(true); err != nil {
return fmt.Errorf("can't set output on pin %d: %v", p.number, err)
}
value := 0
if state {
value = 1
}
p.lastState = state
return p.digitalPin.Write(value)
}

func (p *pin) LastState() bool {
return p.lastState
}
32 changes: 32 additions & 0 deletions hal/valid_gpio_pins.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package hal

var (
validGPIOPins = map[int]bool{
2: true,
3: true,
4: true,
5: true,
6: true,
7: true,
8: true,
9: true,
10: true,
11: true,
12: true,
13: true,
14: true,
15: true,
16: true,
17: true,
18: true,
19: true,
20: true,
21: true,
22: true,
23: true,
24: true,
25: true,
26: true,
27: true,
}
)

0 comments on commit 285e5de

Please sign in to comment.