Esempio n. 1
0
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);
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
}