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
+}
