aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--irda/Android.mk13
-rw-r--r--irda/irda.c75
-rw-r--r--n5110.mk4
-rw-r--r--overlay/frameworks/base/core/res/res/values/config.xml3
4 files changed, 95 insertions, 0 deletions
diff --git a/irda/Android.mk b/irda/Android.mk
new file mode 100644
index 0000000..1659626
--- /dev/null
+++ b/irda/Android.mk
@@ -0,0 +1,13 @@
+LOCAL_PATH := $(call my-dir)
+
+# HAL module implemenation stored in
+# hw/<POWERS_HARDWARE_MODULE_ID>.<ro.hardware>.so
+include $(CLEAR_VARS)
+
+LOCAL_PRELINK_MODULE := false
+LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
+LOCAL_SHARED_LIBRARIES := liblog libcutils libhardware libdl
+LOCAL_SRC_FILES := irda.c
+LOCAL_MODULE:= irda.exynos4
+LOCAL_MODULE_TAGS := optional
+include $(BUILD_SHARED_LIBRARY)
diff --git a/irda/irda.c b/irda/irda.c
new file mode 100644
index 0000000..0068685
--- /dev/null
+++ b/irda/irda.c
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2013 Cyanogenmod Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <errno.h>
+
+#define LOG_TAG "irda"
+#include <cutils/log.h>
+#include <cutils/sockets.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <hardware/irda.h>
+#include <errno.h>
+
+#define IRDA_DEBUG 1
+
+int fd = 0;
+
+void irda_send_ircode(char* buffer, int length)
+{
+ int retval;
+
+ retval = write(fd, buffer, length);
+
+ return;
+}
+
+static int open_irda(const struct hw_module_t* module, char const* name,
+ struct hw_device_t** device)
+{
+ struct irda_device_t *dev = malloc(sizeof(struct irda_device_t));
+ memset(dev, 0, sizeof(*dev));
+
+ dev->common.tag = HARDWARE_DEVICE_TAG;
+ dev->common.version = 0;
+ dev->common.module = (struct hw_module_t*)module;
+ dev->send_ircode = irda_send_ircode;
+
+ *device = (struct hw_device_t*) dev;
+
+ fd = open("/sys/class/sec/sec_ir/ir_send", O_RDWR);
+ if(fd < 0) {
+ ALOGE("Unable to open IR device: %d - %s",errno,strerror(errno));
+ return fd;
+ }
+
+ return 0;
+}
+
+static struct hw_module_methods_t irda_module_methods = {
+ .open = open_irda
+};
+
+struct hw_module_t HAL_MODULE_INFO_SYM = {
+ .tag = HARDWARE_MODULE_TAG,
+ .module_api_version = 1,
+ .hal_api_version = 0,
+ .id = IRDA_HARDWARE_MODULE_ID,
+ .name = "Irda HW Module",
+ .author = "The CyanogenMod Project",
+ .methods = &irda_module_methods,
+};
diff --git a/n5110.mk b/n5110.mk
index 9443d15..e48c598 100644
--- a/n5110.mk
+++ b/n5110.mk
@@ -56,6 +56,10 @@ PRODUCT_PACKAGES += \
PRODUCT_PACKAGES += \
sensors.smdk4x12
+# IRDA
+PRODUCT_PACKAGES += \
+ irda.exynos4
+
# RIL
PRODUCT_PROPERTY_OVERRIDES += \
mobiledata.interfaces=wlan0
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index 76d54b9..f14a5b9 100644
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -89,4 +89,7 @@
<item>1</item>
<item>7</item>
</integer-array>
+
+ <!-- True if the Irda service should be started at system start -->
+ <bool name="config_enableIrdaManagerService">true</bool>
</resources>