[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH 04/17] hw/misc/tmp105: Extract get_temp_mC() and set_temp_mC(
From: |
Philippe Mathieu-Daudé |
Subject: |
[RFC PATCH 04/17] hw/misc/tmp105: Extract get_temp_mC() and set_temp_mC() helpers |
Date: |
Tue, 21 Apr 2020 14:16:13 +0200 |
Since we are going to reuse this code, extract it as helpers.
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
---
hw/misc/tmp105.c | 31 ++++++++++++++++++++-----------
1 file changed, 20 insertions(+), 11 deletions(-)
diff --git a/hw/misc/tmp105.c b/hw/misc/tmp105.c
index 75ddad3a12..754c8a6eb4 100644
--- a/hw/misc/tmp105.c
+++ b/hw/misc/tmp105.c
@@ -56,11 +56,28 @@ static void tmp105_alarm_update(TMP105State *s)
tmp105_interrupt_update(s);
}
+static int64_t get_temp_mC(TMP105State *s)
+{
+ return s->temperature * 1000 / 256;
+}
+
+static void set_temp_mC(TMP105State *s, int64_t temp_mC, Error **errp)
+{
+ if (temp_mC >= 128000 || temp_mC < -128000) {
+ error_setg(errp, "value %" PRId64 ".%03" PRIu64 " C is out of range",
+ temp_mC / 1000, temp_mC % 1000);
+ return;
+ }
+
+ s->temperature = (int16_t) (temp_mC * 256 / 1000);
+
+ tmp105_alarm_update(s);
+}
+
static void tmp105_get_temperature(Object *obj, Visitor *v, const char *name,
void *opaque, Error **errp)
{
- TMP105State *s = TMP105(obj);
- int64_t value = s->temperature * 1000 / 256;
+ int64_t value = get_temp_mC(TMP105(obj));
visit_type_int(v, name, &value, errp);
}
@@ -71,7 +88,6 @@ static void tmp105_get_temperature(Object *obj, Visitor *v,
const char *name,
static void tmp105_set_temperature(Object *obj, Visitor *v, const char *name,
void *opaque, Error **errp)
{
- TMP105State *s = TMP105(obj);
Error *local_err = NULL;
int64_t temp;
@@ -80,15 +96,8 @@ static void tmp105_set_temperature(Object *obj, Visitor *v,
const char *name,
error_propagate(errp, local_err);
return;
}
- if (temp >= 128000 || temp < -128000) {
- error_setg(errp, "value %" PRId64 ".%03" PRIu64 " C is out of range",
- temp / 1000, temp % 1000);
- return;
- }
- s->temperature = (int16_t) (temp * 256 / 1000);
-
- tmp105_alarm_update(s);
+ set_temp_mC(TMP105(obj), temp, errp);
}
static const int tmp105_faultq[4] = { 1, 2, 4, 6 };
--
2.21.1
- [RFC PATCH 00/17] hw/misc: Introduce a temperature sensor interface, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 02/17] hw/misc/temp-sensor: Add 'query-temperature-sensors' QMP command, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 03/17] hw/misc/temp-sensor: Add 'info temp' HMP command, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 01/17] hw/misc: Introduce the temperature sensor interface, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 06/17] hw/misc/tmp421: Add definition for SENSORS_COUNT, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 08/17] hw/misc/tmp421: Extract set_temp_mC() helper, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 04/17] hw/misc/tmp105: Extract get_temp_mC() and set_temp_mC() helpers,
Philippe Mathieu-Daudé <=
- [RFC PATCH 05/17] hw/misc/tmp105: Implement the 'temperature-sensor' qdev interface, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 09/17] hw/misc/tmp421: Implement the 'temperature-sensor' qdev interface, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 10/17] hw/misc/bcm2835_thermal: Hold the temperature in the device state, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 07/17] hw/misc/tmp421: Extract get_temp_mC() helper, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 11/17] hw/misc/bcm2835_thermal: Implement the 'temperature-sensor' interface, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 12/17] hw/misc/bcm2835_property: Hold the temperature in the device state, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 15/17] hw/ide/qdev: Implement the 'temperature-sensor' qdev interface, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 14/17] hw/display/ads7846: Implement the 'temperature-sensor' qdev interface, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 17/17] tests/qtest/tmp105-test: Trivial test for TempSensorClass, Philippe Mathieu-Daudé, 2020/04/21
- [RFC PATCH 16/17] hw/misc/imx6ul_ccm: Implement the 'temperature-sensor' qdev interface, Philippe Mathieu-Daudé, 2020/04/21