@@ -23,6 +23,7 @@ type Filter uint
2323type Device struct {
2424 bus drivers.I2C
2525 Address uint16
26+ buf [6 ]byte
2627 cali calibrationCoefficients
2728 Temperature Oversampling
2829 Pressure Oversampling
@@ -134,8 +135,8 @@ func (d *Device) PrintCali() {
134135
135136// ReadTemperature returns the temperature in celsius milli degrees (°C/1000).
136137func (d * Device ) ReadTemperature () (temperature int32 , err error ) {
137- data , err := d .readData ( REG_TEMP , 3 )
138- if err != nil {
138+ data := d .buf [: 3 ]
139+ if err = d . readData ( REG_TEMP , data ); err != nil {
139140 return
140141 }
141142
@@ -158,8 +159,8 @@ func (d *Device) ReadTemperature() (temperature int32, err error) {
158159// ReadPressure returns the pressure in milli pascals (mPa).
159160func (d * Device ) ReadPressure () (pressure int32 , err error ) {
160161 // First 3 bytes are Pressure, last 3 bytes are Temperature
161- data , err := d .readData ( REG_PRES , 6 )
162- if err != nil {
162+ data := d .buf [: 6 ]
163+ if err = d . readData ( REG_PRES , data ); err != nil {
163164 return
164165 }
165166
@@ -203,7 +204,7 @@ func (d *Device) ReadPressure() (pressure int32, err error) {
203204}
204205
205206// readData reads n number of bytes of the specified register
206- func (d * Device ) readData (register int , n int ) ( []byte , error ) {
207+ func (d * Device ) readData (register int , data []byte ) error {
207208 // If not in normal mode, set the mode to FORCED mode, to prevent incorrect measurements
208209 // After the measurement in FORCED mode, the sensor will return to SLEEP mode
209210 if d .Mode != MODE_NORMAL {
@@ -218,9 +219,7 @@ func (d *Device) readData(register int, n int) ([]byte, error) {
218219 }
219220
220221 // Read the requested register
221- data := make ([]byte , n )
222- err := legacy .ReadRegister (d .bus , uint8 (d .Address ), uint8 (register ), data [:])
223- return data , err
222+ return legacy .ReadRegister (d .bus , uint8 (d .Address ), uint8 (register ), data [:])
224223}
225224
226225// convert3Bytes converts three bytes to int32
0 commit comments