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