2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <vconf-keys.h>
24 #include "mp-video-log.h"
25 #include "video-player.h"
26 #include "mp-video-type-define.h"
27 #include "mp-video-string-define.h"
28 #include "mp-video-streaming-ctrl.h"
31 static char szNetworkProxy[STR_LEN_MAX] = {0};
32 static char szNetworkIpAddress[STR_LEN_MAX] = {0};
33 static MpNetworkType nNetworkStatus = MP_NETWORK_TYPE_OFF;
34 static MpNetworkWifiState nWifiState = MP_NETWORK_WIFI_OFF;
35 static MpNetworkCellularState nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
37 static Eina_Bool bIsInitCallbackFunc = FALSE;
46 static void MpVideoStreamingCtrlNetworkOnOffCb(keynode_t *pKeyNode,void *pUserData)
50 if (!pUserData || !pKeyNode) {
51 VideoLogInfo("User data is NULL.");
55 char *szkeyname = NULL;
57 szkeyname = vconf_keynode_get_name(pKeyNode);
58 if (!strcmp(szkeyname, VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND)) {
59 switch(vconf_keynode_get_int(pKeyNode))
61 case MP_NETWORK_CLOSE:
62 VideoLogInfo("MP_NETWORK_CLOSE");
66 VideoLogInfo("MP_NETWORK_ON");
70 VideoLogInfo("UNKNOWN NETWORK CONFIG");
77 static void MpVideoStreamingCtrlNetworkStatusCb(keynode_t *pKeyNode,void *pUserData)
79 if (!pUserData || !pKeyNode) {
80 VideoLogInfo("User data is NULL.");
85 char *szkeyname = NULL;
87 szkeyname = vconf_keynode_get_name(pKeyNode);
88 if (!strcmp(szkeyname, VCONFKEY_NETWORK_STATUS)) {
89 switch(vconf_keynode_get_int(pKeyNode))
91 case VCONFKEY_NETWORK_OFF:
92 nNetworkStatus = MP_NETWORK_TYPE_OFF;
93 VideoLogInfo("MP_NETWORK_TYPE_OFF");
96 case VCONFKEY_NETWORK_CELLULAR:
97 VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
98 nNetworkStatus = MP_NETWORK_TYPE_CELLULAR;
101 case VCONFKEY_NETWORK_WIFI:
102 VideoLogInfo("MP_NETWORK_TYPE_WIFI");
103 nNetworkStatus = MP_NETWORK_TYPE_WIFI;
107 nNetworkStatus = MP_NETWORK_TYPE_OFF;
108 VideoLogInfo("UNKNOWN NETWORK STATE");
114 static void MpVideoStreamingCtrlChangeIpCb(keynode_t *pKeyNode, void *pUserData)
118 if (!pUserData || !pKeyNode) {
119 VideoLogInfo("User data is NULL.");
123 char *szkeyname = NULL;
126 memset(szNetworkIpAddress, 0, sizeof(char) * STR_LEN_MAX);
127 szkeyname = vconf_keynode_get_name(pKeyNode);
128 if(szkeyname == NULL) {
129 VideoLogInfo("key name value is NULL");
133 if (!strcmp(szkeyname, VCONFKEY_NETWORK_IP)) {
134 szTmp = vconf_keynode_get_str(pKeyNode);
137 VideoLogInfo("node string value is NULL");
141 strncpy(szNetworkIpAddress, szTmp, STR_LEN_MAX - 1);
143 VideoLogInfo("Network ip address : %s", szNetworkIpAddress);
146 VideoLogInfo("Invalid ip address.");
150 static void MpVideoStreamingCtrlWiFiStateCb(keynode_t *pKeyNode, void *pUserData)
154 if (!pUserData || !pKeyNode) {
155 VideoLogInfo("User data is NULL.");
159 char *szkeyname = NULL;
161 szkeyname = vconf_keynode_get_name(pKeyNode);
162 if (!strcmp(szkeyname, VCONFKEY_NETWORK_WIFI_STATE)) {
163 switch(vconf_keynode_get_int(pKeyNode))
165 case VCONFKEY_NETWORK_WIFI_OFF:
166 nWifiState = MP_NETWORK_WIFI_OFF;
167 VideoLogInfo("MP_NETWORK_WIFI_OFF");
170 case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED:
171 nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED;
172 VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED");
175 case VCONFKEY_NETWORK_WIFI_CONNECTED:
176 nWifiState = MP_NETWORK_WIFI_CONNECTED;
177 VideoLogInfo("MP_NETWORK_WIFI_CONNECTED");
178 nNetworkStatus = MP_NETWORK_TYPE_OFF;
182 nWifiState = MP_NETWORK_WIFI_OFF;
183 VideoLogInfo("MP_NETWORK_WIFI_OFF - default");
187 nWifiState = MP_NETWORK_WIFI_OFF;
188 VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value");
192 static void MpVideoStreamingCtrlCellularStateCb(keynode_t *pKeyNode,void *pUserData)
196 if (!pUserData || !pKeyNode) {
197 VideoLogInfo("User data is NULL.");
201 char *szkeyname = NULL;
203 szkeyname = vconf_keynode_get_name(pKeyNode);
204 if (!strcmp(szkeyname, VCONFKEY_NETWORK_CELLULAR_STATE)) {
205 switch(vconf_keynode_get_int(pKeyNode))
207 case VCONFKEY_NETWORK_CELLULAR_ON:
208 nCellularState = MP_NETWORK_CELLULAR_ON;
209 VideoLogInfo("MP_NETWORK_CELLULAR_ON");
212 case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF:
213 nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF;
214 VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF");
217 case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF:
218 nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF;
219 VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF");
222 case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE:
223 nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE;
224 VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE");
227 case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE :
228 nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
229 VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE");
233 nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
234 VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default");
238 nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
239 VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value");
248 bool MpVideoStreamingCtrlSetNotifyNetworkOnOff(void *pUserData)
251 VideoLogInfo("[ERR] No exist pUserData.");
257 VideoAppData *pAppData = (VideoAppData *)pUserData;
261 nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND,
262 MpVideoStreamingCtrlNetworkOnOffCb,
266 VideoLogInfo("[ERR] Fail to set network on/off notification.");
273 bool MpVideoStreamingCtrlSetNotifyNetworkStatus(void *pUserData)
276 VideoLogInfo("[ERR] No exist pUserData.");
282 VideoAppData *pAppData = (VideoAppData *)pUserData;
286 nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_STATUS,
287 MpVideoStreamingCtrlNetworkStatusCb,
291 VideoLogInfo("[ERR] Fail to set network status notification.");
298 bool MpVideoStreamingCtrlSetNotifyChangingIp(void *pUserData)
301 VideoLogInfo("[ERR] No exist pUserData.");
307 VideoAppData *pAppData = (VideoAppData *)pUserData;
311 nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_IP,
312 MpVideoStreamingCtrlChangeIpCb,
316 VideoLogInfo("[ERR] Fail to set ip address changing notification.");
323 bool MpVideoStreamingCtrlSetNotifyWiFiState(void *pUserData)
326 VideoLogInfo("[ERR] No exist pUserData.");
332 VideoAppData *pAppData = (VideoAppData *)pUserData;
336 nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_WIFI_STATE,
337 MpVideoStreamingCtrlWiFiStateCb,
341 VideoLogInfo("[ERR] Fail to set wifi state notification.");
348 bool MpVideoStreamingCtrlSetNotifyCellularState(void *pUserData)
351 VideoLogInfo("[ERR] No exist pUserData.");
357 VideoAppData *pAppData = (VideoAppData *)pUserData;
361 nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CELLULAR_STATE,
362 MpVideoStreamingCtrlCellularStateCb,
366 VideoLogInfo("[ERR] Fail to set cellular notification.");
377 bool MpVideoStreamingCtrlGetIpAddress(char* szRetIpAddress)
383 szTmp = vconf_get_str(VCONFKEY_NETWORK_IP);
385 memset(szNetworkIpAddress, 0, sizeof(char) * STR_LEN_MAX);
386 strncpy(szNetworkIpAddress, szTmp, STR_LEN_MAX - 1);
388 memset(szRetIpAddress, 0, sizeof(char) * STR_LEN_MAX);
389 strncpy(szRetIpAddress, szTmp, STR_LEN_MAX - 1);
391 VideoLogInfo("Current network ip address : %s", szNetworkIpAddress);
402 bool MpVideoStreamingCtrlGetProxy(char* szRetProxy)
408 szTmp = vconf_get_str(VCONFKEY_NETWORK_PROXY);
410 memset(szNetworkProxy, 0, sizeof(char) * STR_LEN_MAX);
411 strncpy(szNetworkProxy, szTmp, STR_LEN_MAX - 1);
413 memset(szRetProxy, 0, sizeof(char) * STR_LEN_MAX);
414 strncpy(szRetProxy, szTmp, STR_LEN_MAX - 1);
416 VideoLogInfo("Current network ip address : %s", szNetworkProxy);
427 bool MpVideoStreamingCtrlIsNetworkOn(void)
431 int ntmpCheckNetworkON = 0;
433 if (!vconf_get_int(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND, &ntmpCheckNetworkON)) {
434 switch(ntmpCheckNetworkON)
436 case MP_NETWORK_CLOSE:
437 VideoLogInfo("Network close.");
441 VideoLogInfo("Network on.");
445 VideoLogInfo("Network close.");
451 int MpVideoStreamingCtrlGetNetworkStatus(void)
455 int ntmpGetNetworkStatus = 0;
457 if (!vconf_get_int(VCONFKEY_NETWORK_STATUS, &ntmpGetNetworkStatus)) {
458 switch(ntmpGetNetworkStatus)
460 case VCONFKEY_NETWORK_OFF:
461 nNetworkStatus = MP_NETWORK_TYPE_OFF;
462 VideoLogInfo("MP_NETWORK_TYPE_OFF");
465 case VCONFKEY_NETWORK_CELLULAR:
466 nNetworkStatus = MP_NETWORK_TYPE_CELLULAR;
467 VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
470 case VCONFKEY_NETWORK_WIFI:
471 nNetworkStatus = MP_NETWORK_TYPE_WIFI;
472 VideoLogInfo("MP_NETWORK_TYPE_WIFI");
476 nNetworkStatus = MP_NETWORK_TYPE_OFF;
477 VideoLogInfo("MP_NETWORK_TYPE_OFF - default");
481 nNetworkStatus = MP_NETWORK_TYPE_OFF;
482 VideoLogInfo("MP_NETWORK_TYPE_OFF - invalid value");
485 return nNetworkStatus;
488 int MpVideoStreamingCtrlGetWifiState()
492 int ntmpGetWifiState = 0;
494 if (!vconf_get_int(VCONFKEY_NETWORK_WIFI_STATE, &ntmpGetWifiState)) {
495 switch(ntmpGetWifiState)
497 case VCONFKEY_NETWORK_WIFI_OFF:
498 nWifiState = MP_NETWORK_WIFI_OFF;
499 VideoLogInfo("MP_NETWORK_WIFI_OFF");
502 case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED:
503 nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED;
504 VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED");
507 case VCONFKEY_NETWORK_WIFI_CONNECTED:
508 nWifiState = MP_NETWORK_WIFI_CONNECTED;
509 VideoLogInfo("MP_NETWORK_WIFI_CONNECTED");
513 nWifiState = MP_NETWORK_WIFI_OFF;
514 VideoLogInfo("MP_NETWORK_WIFI_OFF - default");
518 nWifiState = MP_NETWORK_WIFI_OFF;
519 VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value");
526 int MpVideoStreamingCtrlGetCellularState()
530 int ntmpGetCellularState = 0;
532 if (!vconf_get_int(VCONFKEY_NETWORK_CELLULAR_STATE, &ntmpGetCellularState)) {
533 switch(ntmpGetCellularState)
535 case VCONFKEY_NETWORK_CELLULAR_ON:
536 nCellularState = MP_NETWORK_CELLULAR_ON;
537 VideoLogInfo("MP_NETWORK_CELLULAR_ON");
540 case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF:
541 nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF;
542 VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF");
545 case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF:
546 nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF;
547 VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF");
550 case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE:
551 nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE;
552 VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE");
555 case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE :
556 nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
557 VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE");
561 nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
562 VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default");
566 nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
567 VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value");
570 return nCellularState;
573 void MpVideoStreamingCtrlDestroy(void *pUserData)
581 bool MpVideoStreamingCtrlInit(void *pUserData)
584 VideoLogInfo("[ERR] No exist pUserData.");
590 VideoAppData *pAppData = (VideoAppData *)pUserData;
591 char szTmp[STR_LEN_MAX] = {0};
592 bool bNetworkState = FALSE;
594 if(bIsInitCallbackFunc == EINA_FALSE) {
595 MpVideoStreamingCtrlSetNotifyNetworkStatus(pUserData);
596 MpVideoStreamingCtrlSetNotifyChangingIp(pUserData);
597 MpVideoStreamingCtrlSetNotifyWiFiState(pUserData);
598 MpVideoStreamingCtrlSetNotifyCellularState(pUserData);
600 bIsInitCallbackFunc = EINA_TRUE;
603 switch(MpVideoStreamingCtrlGetNetworkStatus())
605 case MP_NETWORK_TYPE_OFF:
606 VideoLogInfo("MP_NETWORK_TYPE_OFF");
607 bNetworkState = FALSE;
610 case MP_NETWORK_TYPE_CELLULAR:
611 VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
612 if(MpVideoStreamingCtrlGetCellularState() == MP_NETWORK_CELLULAR_ON)
613 bNetworkState = TRUE;
616 case MP_NETWORK_TYPE_WIFI:
617 VideoLogInfo("MP_NETWORK_TYPE_WIFI");
618 if(MpVideoStreamingCtrlGetWifiState() == MP_NETWORK_WIFI_CONNECTED)
619 bNetworkState = TRUE;
624 MpVideoStreamingCtrlGetIpAddress(szTmp);
625 VideoLogInfo("Current IP Address : %s", szTmp);
627 memset(szTmp, 0, STR_LEN_MAX);
628 MpVideoStreamingCtrlGetProxy(szTmp);
629 VideoLogInfo("Current Proxy Address : %s", szTmp);
630 VideoLogInfo("Current Proxy Address : %s", szTmp);
632 memset(pAppData->szProxyAddress, 0, STR_LEN_MAX);
633 strncpy(pAppData->szProxyAddress, szTmp, STR_LEN_MAX - 1);
636 return bNetworkState;