| #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 < 60) | 
 |     { | 
 |         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 < 60) | 
 |     { | 
 |         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 | 
 | } |