Skip to content

Commit 5b9be51

Browse files
muktiharideadprogram
authored andcommitted
bmp280: remove alloc on read sensor data
1 parent 462a0de commit 5b9be51

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

bmp280/bmp280.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ type Filter uint
2323
type 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).
136137
func (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).
159160
func (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

Comments
 (0)