blob: ac3203cee7d6b5b5946bd97620521ab572f0184b [file] [log] [blame]
#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
}