From: SeokYeon Hwang Date: Sun, 10 Nov 2013 07:43:58 +0000 (+0900) Subject: Prevent from entering "sleep" state via pmapi. X-Git-Tag: submit/tizen/20150527.025434~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=571d2dbde58de12422c2f324e8c2ef3a1f94b540;p=platform%2Fadaptation%2Femulator%2Femulator-daemon.git Prevent from entering "sleep" state via pmapi. 1. Using pmapi for power manager control. Now we can control power manager without power-manager modification. 2. Retab emuld.c Change-Id: I89e6472769d3f3d9929f605e1dda6835fd782311 Signed-off-by: SeokYeon Hwang --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 53bfe39..a8fb974 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,6 +37,6 @@ add_definitions(-Iinclude) ADD_EXECUTABLE(${PROJECT_NAME} src/emuld.c src/get_status.c) target_link_libraries(${PROJECT_NAME} ${rpkgs_LDFLAGS} ${GLES_LDFLAGS}) -TARGET_LINK_LIBRARIES(${PROJECT_NAME} "-lpthread -lvconf" ) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} "-lpthread -lvconf -lpmapi" ) install(TARGETS ${PROJECT_NAME} DESTINATION /usr/bin) diff --git a/packaging/emuld.spec b/packaging/emuld.spec index ab9beca..3715b8b 100644 --- a/packaging/emuld.spec +++ b/packaging/emuld.spec @@ -8,6 +8,7 @@ Group: SDK/Other Source1001: packaging/emuld.manifest BuildRequires: cmake BuildRequires: pkgconfig(vconf) +BuildRequires: pkgconfig(pmapi) %description A emulator daemon is used for communication emulator between and ide. @@ -59,8 +60,6 @@ chmod 770 %{_prefix}/bin/emuld mkdir -p /opt/nfc touch /opt/nfc/sdkMsg -%postun - %files %defattr(-,root,root,-) %{_prefix}/bin/emuld diff --git a/src/emuld.c b/src/emuld.c index 78be1ca..f9a36da 100755 --- a/src/emuld.c +++ b/src/emuld.c @@ -38,20 +38,25 @@ License: GNU General Public License #include "emuld_common.h" #include "emuld.h" +#include "pmapi.h" + #define MAX_CONNECT_TRY_COUNT (60 * 3) + +#define PMAPI_RETRY_COUNT 3 + /* global definition */ unsigned short sdbd_port = SDBD_PORT; unsigned short vmodem_port = VMODEM_PORT; unsigned short gpsd_port = GPSD_PORT; unsigned short sensord_port = SENSORD_PORT; -int g_svr_sockfd; /* global server socket fd */ -int g_svr_port; /* global server port number */ -int g_vm_sockfd; /* vmodem fd */ -int g_sdbd_sockfd = -1; /* sdbd fd */ +int g_svr_sockfd; /* global server socket fd */ +int g_svr_port; /* global server port number */ +int g_vm_sockfd; /* vmodem fd */ +int g_sdbd_sockfd = -1; /* sdbd fd */ static int g_vm_connect_status; /* connection status between emuld and vmodem */ int g_sdcard_sockfd = -1; -int g_get_status_sockfd = -1; /* return status of devive to the injector */ +int g_get_status_sockfd = -1; /* return status of devive to the injector */ pthread_t tid[MAX_CLIENT + 1]; @@ -62,18 +67,18 @@ struct sockaddr_in si_sensord_other, si_gpsd_other; int uSensordFd, uGpsdFd, sslen=sizeof(si_sensord_other), sglen=sizeof(si_gpsd_other); struct { - int cli_sockfd; /* client socket fds */ - unsigned short cli_port; /* client connection port */ + int cli_sockfd; /* client socket fds */ + unsigned short cli_port; /* client connection port */ } g_client[MAX_CLIENT]; -int g_epoll_fd; /* epoll fd */ +int g_epoll_fd; /* epoll fd */ static pthread_mutex_t mutex_vmconnect = PTHREAD_MUTEX_INITIALIZER; struct epoll_event g_events[MAX_EVENTS]; void TAPIMessageInit(LXT_MESSAGE *packet) -{ +{ packet->length = 0; packet->group = 0; packet->action = 0; @@ -356,7 +361,7 @@ int umount_sdcard(void) memset(file_name, '\0', sizeof(file_name)); LXT_MESSAGE* packet = (LXT_MESSAGE*)malloc(sizeof(LXT_MESSAGE)); if(packet == NULL){ - return ret; + return ret; } memset(packet, 0, sizeof(LXT_MESSAGE)); @@ -397,8 +402,8 @@ int umount_sdcard(void) } if(packet){ - free(packet); - packet = NULL; + free(packet); + packet = NULL; } return ret; } @@ -459,8 +464,8 @@ void userpool_add(int cli_fd, unsigned short cli_port) if(g_client[i].cli_sockfd == -1) break; } if( i >= MAX_CLIENT ){ - close(cli_fd); - return; + close(cli_fd); + return; } LOG("g_client[%d].cli_port: %d", i, cli_port); @@ -586,15 +591,15 @@ int recv_data(int event_fd, char** r_databuf, int size) r_tmpbuf = (char*)malloc(alloc_size); if(r_tmpbuf == NULL) { - return -1; + return -1; } char* databuf = (char*)malloc(alloc_size); if(databuf == NULL) { - free(r_tmpbuf); - *r_databuf = NULL; - return -1; + free(r_tmpbuf); + *r_databuf = NULL; + return -1; } memset(databuf, '\0', alloc_size); @@ -714,7 +719,7 @@ void client_recv(int event_fd) LXT_MESSAGE* packet = (LXT_MESSAGE*)malloc(sizeof(LXT_MESSAGE)); if (!packet) - return; + return; memset(packet, 0, sizeof(*packet)); @@ -937,9 +942,9 @@ void client_recv(int event_fd) r_databuf = NULL; recvd_size = recv_data(event_fd, &r_databuf, packet->length); if(r_databuf == NULL){ - free(packet); - packet = NULL; - return; + free(packet); + packet = NULL; + return; } LOG("nfc data recv buffer: %s", r_databuf); @@ -1007,7 +1012,7 @@ void client_recv(int event_fd) if(recvd_size <= 0){ LOG("client_recv: recv_data err"); if(r_databuf) { - free(r_databuf); + free(r_databuf); r_databuf = NULL; } if(packet) { @@ -1057,7 +1062,7 @@ void client_recv(int event_fd) LXT_MESSAGE* mntData = (LXT_MESSAGE*)malloc(sizeof(LXT_MESSAGE)); if(mntData == NULL){ - break; + break; } memset(mntData, 0, sizeof(LXT_MESSAGE)); @@ -1353,6 +1358,18 @@ void setting_location(char* databuf) } } +void set_lock_state() { + int i = 0; + // Now we blocking to enter "SLEEP". + while (i < PMAPI_RETRY_COUNT && pm_lock_state(LCD_OFF, STAY_CUR_STATE, 0) == -1) { + ++i; + sleep(10); + } + if (i == PMAPI_RETRY_COUNT) { + fprintf(stderr, "Emulator Daemon: Failed to call pm_lock_state().\n"); + } +} + int main( int argc , char *argv[]) { if(log_print == 1) @@ -1385,7 +1402,7 @@ int main( int argc , char *argv[]) /* init server */ init_server0(g_svr_port); - epoll_init(); /* epoll initialize */ + epoll_init(); /* epoll initialize */ set_vm_connect_status(0); @@ -1394,6 +1411,8 @@ int main( int argc , char *argv[]) udp_init(); + set_lock_state(); + bool is_exit = false; /* main loop */ while(!is_exit) @@ -1402,8 +1421,8 @@ int main( int argc , char *argv[]) } /* infinite loop while end. */ if(pthread_mutex_destroy(&mutex_vmconnect)) { - // TODO: error... - } + // TODO: error... + } fprintf(stderr, "emuld exit\n");