[Feature] add poweralarm /wakup-alarm lib

Change-Id: Iff1697a5347d309e6d3ccbbcbf49f997abda76e4
diff --git a/src/lynq/lib/libpoweralarm/libpoweralarm.c b/src/lynq/lib/libpoweralarm/libpoweralarm.c
new file mode 100644
index 0000000..ac3203c
--- /dev/null
+++ b/src/lynq/lib/libpoweralarm/libpoweralarm.c
@@ -0,0 +1,86 @@
+#include<stdio.h>
+#include<stdlib.h>
+#include<unistd.h>
+#include<stdbool.h>
+#include<log/log.h>
+#include"./include/format_change.h"
+
+
+#define LOG_TAG "libpoweralarm" 
+#define RTCFILE_POWERALARM "/sys/class/rtc/rtc0/poweralarm"
+
+#define RTCFILE_WAKEALARM "/sys/class/rtc/rtc0/wakealarm"
+
+extern "C" ssize_t wakealarm(char *buffer);
+
+
+extern "C" ssize_t poweralarm(char *buffer);
+
+ssize_t poweralarm(char *buffer);
+
+ssize_t wakealarm(char *buffer);
+/*****************************************************************************
+* 
+*   Prototype    : poweralarm
+*   Description  : set shutdown wake-up alarm clock 
+*   Input        : char *buffer ;  input format : 04-23-15-30-00 ( Mon-Day-Hour-Min-Sec ) Or  1200 ( seconds )              
+*   Output       : None
+*   Return Value : -1: error ; >0: set to wake up the devices after seconds
+*
+*****************************************************************************/
+ssize_t poweralarm(char *buffer)
+{
+    ssize_t sec;
+    char *time_buff = NULL;
+
+    sec = format_change(buffer); //computing seconds for shutdown alarm
+    if(sec < 0)
+    {
+        ALOGI("No Mattch\n");
+        return -1;
+    }
+    
+    time_buff = (char*)malloc(100);
+    bzero(time_buff,100);
+
+    sprintf(time_buff,"echo +%ld > %s",sec,RTCFILE_POWERALARM); //write formatted data into time_buff
+    system(time_buff);
+    ALOGI(time_buff);
+
+    free(time_buff);
+
+    return sec; // wake-up devices after sec seconds
+}
+
+
+/*****************************************************************************
+*   Prototype    : wakealarm
+*   Description  : set the wake-up alarm clock in low power mode
+*   Input        : char *buffer ;  input format : 04-23-15-30-00 ( Mon-Day-Hour-Min-Sec ) Or  1200 ( seconds )              
+*   Output       : None
+*   Return Value : -1: error ; >0: set to wake up the devices after seconds
+*
+*****************************************************************************/
+ssize_t wakealarm(char *buffer)
+{
+    ssize_t sec;
+    char *time_buff = NULL;
+
+    sec = format_change(buffer); //computing seconds for lowpower alarm
+    if(sec < 0)
+    {
+        ALOGI("No Mattch\n");
+        return -1;
+    }
+    
+    time_buff = (char*)malloc(100);
+    bzero(time_buff,100);
+
+    sprintf(time_buff,"echo +%ld > %s",sec,RTCFILE_WAKEALARM); //write formatted data into time_buff
+    system(time_buff);
+    ALOGI(time_buff);
+
+    free(time_buff);
+
+    return sec; // wake-up devices after sec seconds
+}