air_sensor: Move common reading code to function

I erased 2 that were the same. And I copied it in another place called
a function. I used the function to read the sensor.

- Tali

Change-Id: I4e4a97b03891e2455839ca302040b3dc3f504a10
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/showcase/sense/+/229291
Reviewed-by: Taylor Cramer <cramertj@google.com>
Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com>
Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>
Commit-Queue: Yuval Peress <peress@google.com>
diff --git a/modules/air_sensor/service.cc b/modules/air_sensor/service.cc
index f12e931..2426393 100644
--- a/modules/air_sensor/service.cc
+++ b/modules/air_sensor/service.cc
@@ -24,14 +24,19 @@
   air_sensor_ = &air_sensor;
 }
 
-pw::Status AirSensorService::Measure(const pw_protobuf_Empty&,
-                                     air_sensor_Measurement& response) {
-  PW_TRY(air_sensor_->Measure(notification_));
-  notification_.acquire();
+void AirSensorService::FillMeasurement(air_sensor_Measurement& response) {
   response.temperature = air_sensor_->temperature();
   response.pressure = air_sensor_->pressure();
   response.humidity = air_sensor_->humidity();
   response.gas_resistance = air_sensor_->gas_resistance();
+  response.score = air_sensor_->score();
+}
+
+pw::Status AirSensorService::Measure(const pw_protobuf_Empty&,
+                                     air_sensor_Measurement& response) {
+  PW_TRY(air_sensor_->Measure(notification_));
+  notification_.acquire();
+  FillMeasurement(response);
   return pw::OkStatus();
 }
 
@@ -60,19 +65,11 @@
 }
 
 void AirSensorService::SampleCallback(pw::chrono::SystemClock::time_point) {
-  float temperature = air_sensor_->temperature();
-  float pressure = air_sensor_->pressure();
-  float humidity = air_sensor_->humidity();
-  float gas_resistance = air_sensor_->gas_resistance();
-  uint16_t score = air_sensor_->score();
+  air_sensor_Measurement response;
 
-  pw::Status status = sample_writer_.Write({
-      .temperature = temperature,
-      .pressure = pressure,
-      .humidity = humidity,
-      .gas_resistance = gas_resistance,
-      .score = score,
-  });
+  FillMeasurement(response);
+
+  pw::Status status = sample_writer_.Write(response);
   if (status.ok()) {
     ScheduleSample();
   } else {
diff --git a/modules/air_sensor/service.h b/modules/air_sensor/service.h
index 18e0093..6331075 100644
--- a/modules/air_sensor/service.h
+++ b/modules/air_sensor/service.h
@@ -47,6 +47,8 @@
 
   void ScheduleSample();
 
+  void FillMeasurement(air_sensor_Measurement& response);
+
   Worker* worker_ = nullptr;
   AirSensor* air_sensor_ = nullptr;
   pw::sync::ThreadNotification notification_;