tizen beta release
[framework/web/wrt-plugins-common.git] / src / modules / tizen / Radio / Manager.cpp
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.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
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 /**
17  * @author        Zbigniew Kostrzewa <z.kostrzewa@samsung.com>
18  */
19
20 #include "Manager.h"
21 #include <Commons/Exception.h>
22 #include "Source.h"
23 #include <tizen.h>
24 #include <telephony_network_type.h>
25 #include <telephony_network.h>
26 #include <TapiCommon.h>
27 #include <cstdlib>
28 #include <dpl/log/log.h>
29
30 namespace WrtDeviceApis {
31 namespace Radio {
32 Manager& Manager::getInstance()
33 {
34     static Manager instance;
35     return instance;
36 }
37
38 Manager::~Manager()
39 {
40     delete m_source;
41 }
42
43 bool Manager::isEnabled() const
44 {
45     Try {
46         switch (m_serviceType.getInt()) {
47         case VCONFKEY_TELEPHONY_SVCTYPE_NONE:
48         case VCONFKEY_TELEPHONY_SVCTYPE_NOSVC:
49         case VCONFKEY_TELEPHONY_SVCTYPE_EMERGENCY:
50         case VCONFKEY_TELEPHONY_SVCTYPE_SEARCH:
51             return false;
52         case VCONFKEY_TELEPHONY_SVCTYPE_2G:
53         case VCONFKEY_TELEPHONY_SVCTYPE_2_5G:
54         case VCONFKEY_TELEPHONY_SVCTYPE_2_5G_EDGE:
55         case VCONFKEY_TELEPHONY_SVCTYPE_3G:
56         case VCONFKEY_TELEPHONY_SVCTYPE_HSDPA:
57             return true;
58         default:
59             return false;
60         }
61     }
62     Catch(Commons::ConversionException) {
63         ReThrow(Commons::PlatformException);
64     }
65 }
66
67 bool Manager::isRoaming() const
68 {
69     Try {
70         return (m_roam.getInt() == VCONFKEY_TELEPHONY_SVC_ROAM_ON);
71     }
72     Catch(Commons::ConversionException) {
73         ReThrow(Commons::PlatformException);
74     }
75 }
76
77 Api::ISource* Manager::getSource() const
78 {
79     return m_source;
80 }
81
82 Api::Strength Manager::getSignalStrength() const
83 {
84     if (VCONFKEY_TELEPHONY_RSSI_6 == 0) {
85         ThrowMsg(Commons::PlatformException, "Division by zero.");
86     }
87     Try {
88         return 100 * m_rssi.getInt() /
89                static_cast<float>(VCONFKEY_TELEPHONY_RSSI_6);
90     }
91     Catch(Commons::ConversionException) {
92         ReThrow(Commons::PlatformException);
93     }
94 }
95
96 std::string Manager::getMcc() const
97 {
98     char*   mcc = NULL;
99
100     if (network_info_get_mcc(&mcc) == NETWORK_INFO_ERROR_NONE) {
101         LogDebug("Mobile Country Code : " << mcc);
102
103         std::string strMcc(mcc);
104         free(mcc);
105
106         return strMcc;
107     }
108
109     return "";
110 }
111
112 std::string Manager::getMnc() const
113 {
114     char*   mnc = NULL;
115
116     if (network_info_get_mnc(&mnc) == NETWORK_INFO_ERROR_NONE) {
117         LogDebug("Mobile Network Code : " << mnc);
118
119         std::string strMnc(mnc);
120         free(mnc);
121
122         return strMnc;
123     }
124
125     return "";
126 }
127
128 bool Manager::isHardwareOn() const
129 {
130     int status = false;
131
132     if (tel_check_service_ready(&status) == TAPI_API_SUCCESS)
133     {
134         if(status) return true;
135     }
136
137     return false;
138 }
139
140 Manager::Manager() :
141     m_rssi(VCONFKEY_TELEPHONY_RSSI),
142     m_roam(VCONFKEY_TELEPHONY_SVC_ROAM),
143     m_serviceType(VCONFKEY_TELEPHONY_SVCTYPE),
144     m_source(new Source())
145 {
146 }
147 } // Radio
148 } // WrtDeviceApis