static int sendResponMessage(void *data){ app_data *appdata = data; bundle *resp_dir = bundle_create(); RETVM_IF(bundle_add_str(resp_dir, "folder_path", send_folders) != 0, SVC_RES_FAIL, "Failed to add data by key to bundle"); _app_send_response(appdata, resp_dir); bundle_free(resp_dir); return SVC_RES_OK; }
void _send_values(const char* sensor_name, const float val1, const float val2, const float val3) { int error = MESSAGE_PORT_ERROR_NONE; char str[100]; bundle *b = bundle_create(); sprintf (str, "%.4f %.4f %.4f", val1, val2, val3); LOGE("%s", str); bundle_add_str(b, sensor_name, str); error = message_port_send_message(REMOTE_APP_ID, REMOTE_PORT, b); if (error != MESSAGE_PORT_ERROR_NONE) { LOGE("message_port_check_remote_port error : %d", error); } else { LOGE("Send message done"); } bundle_free(b); }
static int _app_execute_operation(app_data *appdata, req_operation operation_type) { dlog_print(DLOG_INFO ,"tdlna", "_app_execute_operation 실행"); bundle *resp_msg = bundle_create(); RETVM_IF(!appdata, SVC_RES_FAIL, "Application data is NULL"); char *resp_key_val = NULL; char respStr[50]; switch (operation_type) { case REQ_OPER_STATE: dlog_print(DLOG_INFO, "tdlna", "현재 상태 얻기"); if ((appdata->run_tdlna) == 0) { // 서비스가 꺼져있는 상태라면 dlog_print(DLOG_INFO, "tdlna", "서비스 상태 조회 %d", appdata->run_tdlna); resp_key_val = "STATE:OFF"; } else { resp_key_val = "STATE:ON"; dlog_print(DLOG_INFO, "tdlna", "서비스 상태 조회 %d", appdata->run_tdlna); } break; case REQ_OPER_FOLDER: dlog_print(DLOG_INFO, "tdlna", "미디어 정보 얻기"); send_folders[0] = '\0';//초기화 if(media_Directory(appdata)){//미디어 폴더 경로를 sendFolder함수로 전달해줌 //폴더검색후 sendResponMessage(appdata); dlog_print(DLOG_INFO,"tdlna","미디어 폴더 전송:%s",send_folders); } resp_key_val = "미디어 폴더 요청"; break; case REQ_OPER_META_GET_APP: dlog_print(DLOG_INFO,"tdlna","메타정보 가져오기 실행 "); //------------------------------------------------------------------------------------------------------김태형~~!!! char* testDir; mediaDirectory_folder(&testDir,2); dlog_print(DLOG_INFO,"tdlna","비디오 폴더 이어붙인것:%s",testDir); //------------------------------------------------------------------------------------------------------- // _media_search(appdata); // Meta_Get_from_path(appdata,"/opt/usr/media/DCIM/Camera/%"); // int videoC = 0,imageC=0,musicC = 0 ; // media_Count(&videoC,&imageC,&musicC,"/opt/usr/media/DCIM/Camera/%"); break; case REQ_OPER_DLNA_APP://실행 요청시 dlog_print(DLOG_INFO,"tdlna","dlna on 처리"); if(!(appdata->run_tdlna)){ // 서비스가 꺼져있는 상태라면 if(appdata->tdlna_td != 0){ dlog_print(DLOG_ERROR,"tdlna", "이전 실행된 서비스가 정상적으로 종료되지 않았습니다."); return 0; } if(serviceOn(appdata)){ dlog_print(DLOG_INFO,"tdlna","★ 서비스 ON ★ %d", appdata->run_tdlna); resp_key_val = "DLNA:ON"; }else{ dlog_print(DLOG_INFO,"tdlna","★ 실행 실패! ★ %d", appdata->run_tdlna); resp_key_val = "DLNA:Failed"; } } else{ resp_key_val = "DLNA:RUNNING"; dlog_print(DLOG_INFO,"tdlna","★ 이미 실행중 ★ %d", appdata->run_tdlna); } break; case REQ_OPER_DLNA_APP_OFF://종료 요청시 if (!(appdata->run_tdlna)) {// 서비스가 꺼져있는 상태라면 resp_key_val = "DLNA:OFF"; dlog_print(DLOG_INFO, "tdlna", "★ 이미 종료상태★ %d",appdata->run_tdlna); } else { serviceOff(appdata); resp_key_val = "DLNA:OFF"; dlog_print(DLOG_INFO, "tdlna", "★ 서비스 OFF ★ %d",appdata->run_tdlna); } break; case REQ_OPER_DEVICE_ID://tDlnaName 주기 if(deviceName){ strcpy(appdata->deviceName, deviceName); setDeviceProperty(appdata);//tdlnamain으로 전달 sprintf(respStr, "%s%s", "tDlnaName/", deviceName); }else sprintf(respStr, "%s%s", "tDlnaName/", "nameError!"); resp_key_val = respStr; dlog_print(DLOG_INFO, "tdlna", "resp_key_val값 가져오기 %s",resp_key_val); break; case REQ_SHARED_FOLDER: resp_key_val = "공유폴더!"; dlog_print(DLOG_INFO, "tdlna", "%s 폴더 공유 실행",shared_folder); insertSharingList(); // _META *test; // int testC=0; // testC= Meta_Get_from_path(appdata,shared_folder,2,&test); // dlog_print(DLOG_INFO, "tdlna", "리스트갯수:%d",testC); // dlog_print(DLOG_INFO, "tdlna", "리스트 1 :%s",test[1].path); // free(test); break; case REQ_UNSHARED_FOLDER: resp_key_val = "공유해제 폴더!"; dlog_print(DLOG_INFO, "tdlna", "%s 폴더 공유 해제 실행",shared_folder); deleteSharingList(); //공유 해제 폴더 처리 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ break; default: DBG("Unknown request id"); return SVC_RES_FAIL; break; } RETVM_IF(bundle_add_str(resp_msg, "server", resp_key_val) != 0, SVC_RES_FAIL, "Failed to add data by key to bundle"); _app_send_response(appdata, resp_msg); bundle_free(resp_msg); return SVC_RES_OK; }
static int _app_process_received_message(bundle *rec_msg, bundle *resp_msg, req_operation *req_oper) { dlog_print(DLOG_INFO ,"tdlna", "_app_process_received_message 실행"); RETVM_IF(!rec_msg, SVC_RES_FAIL,"Received message is NULL"); RETVM_IF(!resp_msg, SVC_RES_FAIL,"Response message is NULL"); const char *resp_key_val = NULL; char *rec_key_val = NULL,*rec_share_folder = NULL,*rec_unshare_folder = NULL; int res_shared = 0; bool reciveOK = false; res_shared = bundle_get_str(rec_msg, "shared", &rec_share_folder); if (res_shared == BUNDLE_ERROR_NONE) {//공유 폴더 수신 reciveOK = true; RETVM_IF(res_shared != BUNDLE_ERROR_NONE, SVC_RES_FAIL, "Failed to get string from shared_bundle"); dlog_print(DLOG_INFO ,"tdlna", "공유폴더 수신: %s",rec_share_folder); resp_key_val = "(공유폴더) 수신"; *req_oper = REQ_SHARED_FOLDER; strcpy(shared_folder,rec_share_folder+7); // strcat(shared_folder,"\%"); dlog_print(DLOG_INFO ,"tdlna", "공유폴더 저장: %s",shared_folder); } res_shared = bundle_get_str(rec_msg, "unshared", &rec_unshare_folder); if (res_shared == BUNDLE_ERROR_NONE) {//공유 취소 폴더수신 reciveOK = true; RETVM_IF(res_shared != BUNDLE_ERROR_NONE, SVC_RES_FAIL, "Failed to get string from unshared_bundle"); dlog_print(DLOG_INFO ,"tdlna", "공유취소폴더 수신: %s",rec_unshare_folder); resp_key_val = "(공유취소폴더) 수신"; *req_oper = REQ_UNSHARED_FOLDER; strcpy(shared_folder,rec_unshare_folder+7); // strcat(shared_folder,"\%"); dlog_print(DLOG_INFO ,"tdlna", "공유취소폴더 저장: %s",rec_unshare_folder); } int res = bundle_get_str(rec_msg, "command", &rec_key_val); if (res == BUNDLE_ERROR_NONE){ reciveOK = true; RETVM_IF(res != BUNDLE_ERROR_NONE, SVC_RES_FAIL, "Failed to get string from bundle"); dlog_print(DLOG_INFO,"tdlna","웹앱으로 부터 서비스 수신:%s",rec_key_val); if (strcmp(rec_key_val, "server state") == 0) {//현재 상태 확인 요청 dlog_print(DLOG_INFO ,"tdlna", "서비스 상태확인요청"); resp_key_val = "(state) 수신"; *req_oper = REQ_OPER_STATE; } else if(strcmp(rec_key_val,"media folder") == 0){ dlog_print(DLOG_INFO ,"tdlna", "서비스 상태확인요청"); resp_key_val = "(media folder) 수신"; *req_oper = REQ_OPER_FOLDER; } else if (strcmp(rec_key_val,"meta") == 0) { resp_key_val = "metaget"; *req_oper = REQ_OPER_META_GET_APP; } else if (strcmp(rec_key_val,"dlna on") == 0)//서비스 ON 요청 { dlog_print(DLOG_INFO ,"tdlna", "서비스 ON 요청 app_process_received_message"); resp_key_val = "(dlna 실행)수신.."; *req_oper = REQ_OPER_DLNA_APP; //*req_oper = REQ_OPER_EXIT_APP; } else if (strcmp(rec_key_val,"dlna off") == 0)//서비스 ON 요청 { dlog_print(DLOG_INFO ,"tdlna", "서비스 OFF 요청 app_process_received_message"); resp_key_val = "(dlna 종료)수신.."; *req_oper = REQ_OPER_DLNA_APP_OFF; //*req_oper = REQ_OPER_EXIT_APP; } else if (strstr(rec_key_val, "getDeviceId") != NULL) { dlog_print(DLOG_INFO, "tdlna","디바이스ID 요청 app_process_received_message"); char *str = strtok(rec_key_val, "|"); dlog_print(DLOG_INFO, "tdlna","strtok: %s",str); str = strtok(NULL, "|"); dlog_print(DLOG_INFO, "tdlna","strtok: %s",str); if(str != NULL){ if(strcmp(str,"&") == 0){//사용자가 빈값을 입력했을때, 장치 기본값으로 변경 get_DeviceID(); }else{//새로운 name을 저장 strcpy(deviceName,str); } } resp_key_val = "(getDeviceId)수신"; *req_oper = REQ_OPER_DEVICE_ID; } } if(!reciveOK) { dlog_print(DLOG_ERROR ,"tdlna", "처리를 못하는 명령"); resp_key_val = "unsupported"; *req_oper = REQ_OPER_NONE; } RETVM_IF(bundle_add_str(resp_msg, "server", resp_key_val) != 0, SVC_RES_FAIL, "Failed to add data by key to bundle"); return SVC_RES_OK; }