Skip to content
Snippets Groups Projects
Verified Commit e260a6cb authored by koalo's avatar koalo Committed by rahix
Browse files

feat(bhi160): Forward status

parent 1aaffea6
No related branches found
No related tags found
No related merge requests found
...@@ -968,6 +968,8 @@ struct bhi160_data_vector { ...@@ -968,6 +968,8 @@ struct bhi160_data_vector {
int16_t y; int16_t y;
/** Z */ /** Z */
int16_t z; int16_t z;
/** Status */
uint8_t status;
}; };
/** /**
......
...@@ -304,6 +304,7 @@ bhi160_handle_packet(bhy_data_type_t data_type, bhy_data_generic_t *sensor_data) ...@@ -304,6 +304,7 @@ bhi160_handle_packet(bhy_data_type_t data_type, bhy_data_generic_t *sensor_data)
data_vector.x = sensor_data->data_vector.x; data_vector.x = sensor_data->data_vector.x;
data_vector.y = sensor_data->data_vector.y; data_vector.y = sensor_data->data_vector.y;
data_vector.z = sensor_data->data_vector.z; data_vector.z = sensor_data->data_vector.z;
data_vector.status = sensor_data->data_vector.status;
xQueueSend( xQueueSend(
bhi160_streams[sensor_type].queue, bhi160_streams[sensor_type].queue,
&data_vector, &data_vector,
......
...@@ -12,10 +12,18 @@ while True: ...@@ -12,10 +12,18 @@ while True:
disp.clear() disp.clear()
sample = samples[0] sample = samples[0]
color = [255, 0, 0]
if sample.status == 1:
color = [255, 128, 0]
elif sample.status == 2:
color = [255, 255, 0]
elif sample.status == 3:
color = [0, 200, 0]
disp.print("Accelerometer", posy=0) disp.print("Accelerometer", posy=0)
disp.print("X: %f" % sample["x"], posy=20) disp.print("X: %f" % sample.x, posy=20, fg=color)
disp.print("Y: %f" % sample["y"], posy=40) disp.print("Y: %f" % sample.y, posy=40, fg=color)
disp.print("Z: %f" % sample["z"], posy=60) disp.print("Z: %f" % sample.z, posy=60, fg=color)
disp.update() disp.update()
......
...@@ -38,11 +38,12 @@ STATIC mp_obj_t mp_bhi160_read_sensor(mp_obj_t stream_id_in) ...@@ -38,11 +38,12 @@ STATIC mp_obj_t mp_bhi160_read_sensor(mp_obj_t stream_id_in)
// other data types are currently not supported // other data types are currently not supported
mp_raise_OSError(EINVAL); mp_raise_OSError(EINVAL);
} }
mp_obj_t tuple[3]; mp_obj_t tuple[4];
tuple[0] = mp_obj_new_int(buf[i].x); tuple[0] = mp_obj_new_int(buf[i].x);
tuple[1] = mp_obj_new_int(buf[i].y); tuple[1] = mp_obj_new_int(buf[i].y);
tuple[2] = mp_obj_new_int(buf[i].z); tuple[2] = mp_obj_new_int(buf[i].z);
mp_obj_list_append(list, mp_obj_new_tuple(3, tuple)); tuple[3] = mp_obj_new_int(buf[i].status);
mp_obj_list_append(list, mp_obj_new_tuple(4, tuple));
} }
return MP_OBJ_FROM_PTR(list); return MP_OBJ_FROM_PTR(list);
......
import sys_bhi160 import sys_bhi160
import interrupt import interrupt
import ucollections
DataVector = ucollections.namedtuple("DataVector", ["x", "y", "z", "status"])
class BHI160: class BHI160:
...@@ -49,6 +52,14 @@ class BHI160: ...@@ -49,6 +52,14 @@ class BHI160:
if self._callback: if self._callback:
self._callback(data) self._callback(data)
def convert_data_vector(self, sample):
return DataVector(
self.convert_single(sample[0]),
self.convert_single(sample[1]),
self.convert_single(sample[2]),
sample[3],
)
class BHI160Accelerometer(BHI160): class BHI160Accelerometer(BHI160):
def __init__( def __init__(
...@@ -67,13 +78,7 @@ class BHI160Accelerometer(BHI160): ...@@ -67,13 +78,7 @@ class BHI160Accelerometer(BHI160):
return 2 * value / 32768.0 return 2 * value / 32768.0
def convert(self, sample): def convert(self, sample):
return dict( return self.convert_data_vector(sample)
{
"x": self.convert_single(sample[0]),
"y": self.convert_single(sample[1]),
"z": self.convert_single(sample[2]),
}
)
class BHI160Gyroscope(BHI160): class BHI160Gyroscope(BHI160):
...@@ -93,13 +98,7 @@ class BHI160Gyroscope(BHI160): ...@@ -93,13 +98,7 @@ class BHI160Gyroscope(BHI160):
return 360 * value / 32768.0 return 360 * value / 32768.0
def convert(self, sample): def convert(self, sample):
return dict( return self.convert_data_vector(sample)
{
"x": self.convert_single(sample[0]),
"y": self.convert_single(sample[1]),
"z": self.convert_single(sample[2]),
}
)
class BHI160Orientation(BHI160): class BHI160Orientation(BHI160):
...@@ -119,10 +118,4 @@ class BHI160Orientation(BHI160): ...@@ -119,10 +118,4 @@ class BHI160Orientation(BHI160):
return 360 * value / 32768.0 return 360 * value / 32768.0
def convert(self, sample): def convert(self, sample):
return dict( return self.convert_data_vector(sample)
{
"x": self.convert_single(sample[0]),
"y": self.convert_single(sample[1]),
"z": self.convert_single(sample[2]),
}
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment