NVMeSensor: use available interface for error handling

Sensor available and functional interfaces are used to
handle sensor not readable and read errors.
Update NVMeSensor to use them.

Tested
No regression detected in NVMeSensor read value

Signed-off-by: Zhikui Ren <zhikui.ren@intel.com>
Change-Id: Iabaf2508d14b3562cfe04992c9558a0114a9665e
diff --git a/src/NVMeSensor.cpp b/src/NVMeSensor.cpp
index 46b2b52..cfa7d20 100644
--- a/src/NVMeSensor.cpp
+++ b/src/NVMeSensor.cpp
@@ -265,7 +265,7 @@
     {
         // 0x80 = No temperature data or temperature data is more the 5 s
         // old 0x81 = Temperature sensor failure
-        return maxReading;
+        return std::numeric_limits<double>::quiet_NaN();
     }
 
     return reading;
@@ -365,7 +365,16 @@
                   << " Celsius for device " << sensorInfo->name << "\n";
     }
 
-    sensorInfo->updateValue(getTemperatureReading(messageData[5]));
+    double value = getTemperatureReading(messageData[5]);
+    if (!std::isfinite(value))
+    {
+        sensorInfo->markAvailable(false);
+        sensorInfo->incrementError();
+    }
+    else
+    {
+        sensorInfo->updateValue(value);
+    }
 
     if (DEBUG)
     {