This commit is contained in:
Felipe Ramos 2016-09-11 01:41:23 +00:00 committed by GitHub
commit 31e7e6221c
1 changed files with 11 additions and 3 deletions

View File

@ -7,6 +7,7 @@ package generic
import ( import (
"errors" "errors"
"fmt" "fmt"
"log"
"os" "os"
"path" "path"
"strconv" "strconv"
@ -42,6 +43,11 @@ func (p *digitalPin) init() error {
if p.initialized { if p.initialized {
return nil return nil
} }
defer func() {
if !p.initialized {
p.unexport()
}
}()
var err error var err error
if err = p.export(); err != nil { if err = p.export(); err != nil {
@ -67,8 +73,9 @@ func (p *digitalPin) export() error {
if err != nil { if err != nil {
return err return err
} }
defer exporter.Close()
_, err = exporter.WriteString(strconv.Itoa(p.n)) _, err = exporter.WriteString(strconv.Itoa(p.n))
exporter.Close()
time.Sleep(time.Second / 2)
return err return err
} }
@ -77,8 +84,9 @@ func (p *digitalPin) unexport() error {
if err != nil { if err != nil {
return err return err
} }
defer unexporter.Close()
_, err = unexporter.WriteString(strconv.Itoa(p.n)) _, err = unexporter.WriteString(strconv.Itoa(p.n))
unexporter.Close()
time.Sleep(time.Second / 2)
return err return err
} }
@ -233,7 +241,7 @@ func (p *digitalPin) Close() error {
} }
if err := p.drv.Unregister(p.id); err != nil { if err := p.drv.Unregister(p.id); err != nil {
return err log.Println("Driver unregister error:", err.Error())
} }
if !p.initialized { if !p.initialized {