blob: a933e9c20eff5f0343ac649ea11cfb10d9d77acb [file] [log] [blame]
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
#include <dlfcn.h>
#define LOG_TAG "libautosuspend"
// #include <liblog/lynq_deflog.h>
#include <log/log.h>
#define SERVER_PATH "/tmp/autosuspend.server"
// #define CLIENT_PATH "/tmp/autosuspend.client"
static int send_cmd(char * value,int len)
{
int client_sock, rc;
struct sockaddr_un server_sockaddr;
struct sockaddr_un client_sockaddr;
if(value == NULL)
{
return -1;
}
/**************************************/
/* Create a UNIX domain stream socket */
/**************************************/
client_sock = socket(AF_UNIX, SOCK_STREAM, 0);
if (client_sock == -1) {
ALOGI("SOCKET ERROR ");
return -5;
}
/***************************************/
/* Set up the UNIX sockaddr structure */
/* by using AF_UNIX for the family and */
/* giving it a filepath to bind to. */
/* */
/* Unlink the file so the bind will */
/* succeed, then bind to that file. */
/***************************************/
client_sockaddr.sun_family = AF_UNIX;
// strcpy(client_sockaddr.sun_path, CLIENT_PATH);
sprintf(client_sockaddr.sun_path,"/tmp/suspend.%d.client",(int)getpid());
len = sizeof(client_sockaddr);
unlink(client_sockaddr.sun_path);
rc = bind(client_sock, (struct sockaddr *) &client_sockaddr, len);
if (rc == -1){
ALOGI("BIND ERROR ");
close(client_sock);
return -4;
}
/***************************************/
/* Set up the UNIX sockaddr structure */
/* for the server socket and connect */
/* to it. */
/***************************************/
server_sockaddr.sun_family = AF_UNIX;
strcpy(server_sockaddr.sun_path, SERVER_PATH);
rc = connect(client_sock, (struct sockaddr *) &server_sockaddr, len);
if(rc == -1){
ALOGI("CONNECT ERROR ");
close(client_sock);
return -3;
}
/************************************/
/* Copy the data to the buffer and */
/* send it to the server socket. */
/************************************/
// strcpy(buf, DATA);
printf("Sending data...\n");
rc = send(client_sock, value, len, 0);
if (rc == -1) {
ALOGI("SEND ERROR ");
close(client_sock);
return -2;
}
else {
ALOGI("Data sent: %s\n",value);
}
close(client_sock);
return rc;
}
int lynq_autosleep_enable(void)
{
char value[15]="enable";
int rc = send_cmd(value,strlen(value));
if(rc < 0)
{
ALOGI("libautosleep_enable ret %d\n",rc);
}
return rc;
}
int lynq_autosleep_disable(void)
{
char value[15]="disable";
int rc = send_cmd(value,strlen(value));
if(rc < 0)
{
ALOGI("libautosleep_disable ret %d\n",rc);
}
return rc;
}