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