@@ -83,6 +83,11 @@ func (d *Driver) SetName(name string) {
8383
8484// Connection returns the gobot connection of the i2c device.
8585func (d * Driver ) Connection () gobot.Connection {
86+ if d .connector == nil {
87+ log .Printf ("%s has no connector\n " , d .name )
88+ return nil
89+ }
90+
8691 if conn , ok := d .connector .(gobot.Connection ); ok {
8792 return conn
8893 }
@@ -96,6 +101,10 @@ func (d *Driver) Start() error {
96101 d .mutex .Lock ()
97102 defer d .mutex .Unlock ()
98103
104+ if d .connector == nil {
105+ return fmt .Errorf ("%s has no connector" , d .name )
106+ }
107+
99108 var err error
100109 bus := d .GetBusOrDefault (d .connector .DefaultI2cBus ())
101110 address := d .GetAddressOrDefault (d .defaultAddress )
@@ -127,7 +136,7 @@ func (d *Driver) Write(pin string, val int) error {
127136 defer d .mutex .Unlock ()
128137
129138 if d .connection == nil {
130- return fmt .Errorf ("i2c driver not started" )
139+ return fmt .Errorf ("i2c driver not started for '%s'" , d . name )
131140 }
132141
133142 register , err := driverParseRegister (pin )
@@ -152,7 +161,7 @@ func (d *Driver) Read(pin string) (int, error) {
152161 defer d .mutex .Unlock ()
153162
154163 if d .connection == nil {
155- return 0 , fmt .Errorf ("i2c driver not started" )
164+ return 0 , fmt .Errorf ("i2c driver not started for '%s'" , d . name )
156165 }
157166
158167 register , err := driverParseRegister (pin )
@@ -170,79 +179,79 @@ func (d *Driver) Read(pin string) (int, error) {
170179
171180func (d * Driver ) write (data []byte ) (int , error ) {
172181 if d .connection == nil {
173- return 0 , fmt .Errorf ("i2c driver not started" )
182+ return 0 , fmt .Errorf ("i2c driver not started for '%s'" , d . name )
174183 }
175184
176185 return d .connection .Write (data )
177186}
178187
179188func (d * Driver ) writeByte (val byte ) error {
180189 if d .connection == nil {
181- return fmt .Errorf ("i2c driver not started" )
190+ return fmt .Errorf ("i2c driver not started for '%s'" , d . name )
182191 }
183192
184193 return d .connection .WriteByte (val )
185194}
186195
187196func (d * Driver ) writeByteData (reg uint8 , val byte ) error {
188197 if d .connection == nil {
189- return fmt .Errorf ("i2c driver not started" )
198+ return fmt .Errorf ("i2c driver not started for '%s'" , d . name )
190199 }
191200
192201 return d .connection .WriteByteData (reg , val )
193202}
194203
195204func (d * Driver ) writeWordData (reg uint8 , val uint16 ) error {
196205 if d .connection == nil {
197- return fmt .Errorf ("i2c driver not started" )
206+ return fmt .Errorf ("i2c driver not started for '%s'" , d . name )
198207 }
199208
200209 return d .connection .WriteWordData (reg , val )
201210}
202211
203212func (d * Driver ) writeBlockData (reg uint8 , data []byte ) error {
204213 if d .connection == nil {
205- return fmt .Errorf ("i2c driver not started" )
214+ return fmt .Errorf ("i2c driver not started for '%s'" , d . name )
206215 }
207216
208217 return d .connection .WriteBlockData (reg , data )
209218}
210219
211220func (d * Driver ) read (data []byte ) (int , error ) {
212221 if d .connection == nil {
213- return 0 , fmt .Errorf ("i2c driver not started" )
222+ return 0 , fmt .Errorf ("i2c driver not started for '%s'" , d . name )
214223 }
215224
216225 return d .connection .Read (data )
217226}
218227
219228func (d * Driver ) readByte () (byte , error ) {
220229 if d .connection == nil {
221- return 0 , fmt .Errorf ("i2c driver not started" )
230+ return 0 , fmt .Errorf ("i2c driver not started for '%s'" , d . name )
222231 }
223232
224233 return d .connection .ReadByte ()
225234}
226235
227236func (d * Driver ) readByteData (reg uint8 ) (byte , error ) {
228237 if d .connection == nil {
229- return 0 , fmt .Errorf ("i2c driver not started" )
238+ return 0 , fmt .Errorf ("i2c driver not started for '%s'" , d . name )
230239 }
231240
232241 return d .connection .ReadByteData (reg )
233242}
234243
235244func (d * Driver ) readWordData (reg uint8 ) (uint16 , error ) {
236245 if d .connection == nil {
237- return 0 , fmt .Errorf ("i2c driver not started" )
246+ return 0 , fmt .Errorf ("i2c driver not started for '%s'" , d . name )
238247 }
239248
240249 return d .connection .ReadWordData (reg )
241250}
242251
243252func (d * Driver ) readBlockData (reg uint8 , data []byte ) error {
244253 if d .connection == nil {
245- return fmt .Errorf ("i2c driver not started" )
254+ return fmt .Errorf ("i2c driver not started for '%s'" , d . name )
246255 }
247256
248257 return d .connection .ReadBlockData (reg , data )
0 commit comments