hidl: consumerir: Fill in implementation for IR hal
authorPaul Keith <javelinanddart@gmail.com>
Tue, 28 Jan 2020 02:19:53 +0000 (20:19 -0600)
committerPaul Keith <javelinanddart@gmail.com>
Tue, 28 Jan 2020 14:07:16 +0000 (08:07 -0600)
Change-Id: I0b69cce74a6fce9bf720508c279df67c49641c49

hidl/consumerir/ConsumerIr.cpp

index 8b5ef82e1bd3add19705b8bf3daff454c2c9324d..9696fa08f2a3d9d5d1b1629b3122bbc6704710ab 100644 (file)
 
 #include <samsung_ir.h>
 
+#include <android-base/file.h>
+#include <android-base/strings.h>
+
+using android::base::Join;
+using android::base::WriteStringToFile;
+
 namespace android {
 namespace hardware {
 namespace ir {
@@ -26,12 +32,25 @@ namespace implementation {
 
 // Methods from ::android::hardware::ir::V1_0::IConsumerIr follow.
 Return<bool> ConsumerIr::transmit(int32_t carrierFreq, const hidl_vec<int32_t>& pattern) {
-    // TODO implement
-    return bool {};
+    float factor;
+    std::vector<int32_t> buffer{carrierFreq};
+
+#ifndef MS_IR_SIGNAL
+    // Calculate factor of conversion from microseconds to pulses
+    factor = 1000000 / carrierFreq;
+#else
+    factor = 1;
+#endif
+
+    for (const int32_t& number : pattern) {
+        buffer.emplace_back(number / factor);
+    }
+
+    return WriteStringToFile(Join(buffer, ','), IR_PATH, true);
 }
 
 Return<void> ConsumerIr::getCarrierFreqs(getCarrierFreqs_cb _hidl_cb) {
-    // TODO implement
+    _hidl_cb(true, consumerirFreqs);
     return Void();
 }