6dab47e6682ede152fbe0c95bcd77625b0b2bece
[platform/core/api/webapi-plugins.git] / src / radio / radio_instance.cc
1 /*
2  * Copyright (c) 2015 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 #include "radio/radio_instance.h"
18 #include <functional>
19 #include <radio.h>
20 #include "common/logger.h"
21
22 namespace extension {
23 namespace radio {
24
25 using namespace common;
26 using namespace extension::radio;
27
28 RadioInstance::RadioInstance() : manager_(*this) {
29   ScopeLogger();
30   using std::placeholders::_1;
31   using std::placeholders::_2;
32
33 #define REGISTER_METHOD(M) \
34     RegisterSyncHandler(#M, std::bind(&RadioInstance::M, this, _1, _2))
35   REGISTER_METHOD(FMRadioStart);
36   REGISTER_METHOD(FMRadioStop);
37   REGISTER_METHOD(SetFMRadioInterruptedListener);
38   REGISTER_METHOD(UnsetFMRadioInterruptedListener);
39   REGISTER_METHOD(FMRadioSetAntennaChangeListener);
40   REGISTER_METHOD(FMRadioUnsetAntennaChangeListener);
41   REGISTER_METHOD(FMRadioFrequencyGetter);
42   REGISTER_METHOD(FMRadioSignalStrengthGetter);
43   REGISTER_METHOD(FMRadioIsAntennaConnectedGetter);
44   REGISTER_METHOD(FMRadioRadioStateGetter);
45   REGISTER_METHOD(FMRadioMuteSetter);
46   REGISTER_METHOD(FMRadioMuteGetter);
47
48   REGISTER_METHOD(FMRadioSeekUp);
49   REGISTER_METHOD(FMRadioSeekDown);
50   REGISTER_METHOD(FMRadioScanStart);
51   REGISTER_METHOD(FMRadioScanStop);
52 #undef REGISTER_METHOD
53 }
54
55 RadioInstance::~RadioInstance() {
56   ScopeLogger();
57 }
58
59 void RadioInstance::FMRadioMuteGetter(const picojson::value& args, picojson::object& out) {
60   ScopeLogger();
61   ReportSuccess(picojson::value(manager_.IsMuted()), out);
62 }
63
64 void RadioInstance::FMRadioMuteSetter(const picojson::value& args, picojson::object& out) {
65   ScopeLogger();
66   manager_.SetMute(args.get("mute").get<bool>());
67   ReportSuccess(out);
68 }
69
70 void RadioInstance::FMRadioIsAntennaConnectedGetter(const picojson::value& args, picojson::object& out) {
71   ScopeLogger();
72   ReportSuccess(picojson::value(manager_.HasAntenna()), out);
73 }
74
75 void RadioInstance::FMRadioRadioStateGetter(const picojson::value& args, picojson::object& out) {
76   ScopeLogger();
77   ReportSuccess(picojson::value(manager_.GetState()), out);
78 }
79
80 void RadioInstance::FMRadioFrequencyGetter(const picojson::value& args, picojson::object& out) {
81   ScopeLogger();
82   ReportSuccess(picojson::value(manager_.GetFrequency()), out);
83 }
84
85 void RadioInstance::FMRadioSignalStrengthGetter(const picojson::value& args, picojson::object& out) {
86   ScopeLogger();
87   ReportSuccess(picojson::value(manager_.GetSignalStrength()), out);
88 }
89
90 void RadioInstance::FMRadioSeekUp(const picojson::value& args, picojson::object& out) {
91   ScopeLogger();
92   manager_.SeekUp(args.get("callbackId").get<double>());
93   ReportSuccess(out);
94 }
95
96 void RadioInstance::FMRadioSeekDown(const picojson::value& args, picojson::object& out) {
97   ScopeLogger();
98   manager_.SeekDown(args.get("callbackId").get<double>());
99   ReportSuccess(out);
100 }
101
102 void RadioInstance::FMRadioStart(const picojson::value& args, picojson::object& out) {
103   ScopeLogger();
104
105   PlatformResult result = manager_.Start(args.get("frequency").get<double>());
106
107   if (result) {
108     ReportSuccess(out);
109   } else {
110     LogAndReportError(result, &out);
111   }
112 }
113
114 void RadioInstance::FMRadioStop(const picojson::value& args, picojson::object& out) {
115   ScopeLogger();
116
117   PlatformResult result = manager_.Stop();
118
119   if (result) {
120     ReportSuccess(out);
121   } else {
122     LogAndReportError(result, &out);
123   }
124 }
125
126 void RadioInstance::FMRadioScanStart(const picojson::value& args, picojson::object& out) {
127   ScopeLogger();
128   manager_.ScanStart(args.get("callbackId").get<double>());
129   ReportSuccess(out);
130 }
131
132 void RadioInstance::FMRadioScanStop(const picojson::value& args, picojson::object& out) {
133   ScopeLogger();
134   manager_.ScanStop(args.get("callbackId").get<double>());
135   ReportSuccess(out);
136 }
137
138 void RadioInstance::SetFMRadioInterruptedListener(const picojson::value& args,
139                                                   picojson::object& out) {
140   ScopeLogger();
141
142   PlatformResult result = manager_.SetFMRadioInterruptedListener();
143
144   if (result) {
145     ReportSuccess(out);
146   } else {
147     LogAndReportError(result, &out);
148   }
149 }
150
151 void RadioInstance::UnsetFMRadioInterruptedListener(const picojson::value& args,
152                                                     picojson::object& out) {
153   ScopeLogger();
154
155   PlatformResult result = manager_.UnsetFMRadioInterruptedListener();
156
157   if (result) {
158     ReportSuccess(out);
159   } else {
160     LogAndReportError(result, &out);
161   }
162 }
163
164 void RadioInstance::FMRadioSetAntennaChangeListener(const picojson::value& args, picojson::object& out) {
165   ScopeLogger();
166
167   PlatformResult result = manager_.SetAntennaChangeListener();
168
169   if (result) {
170     ReportSuccess(out);
171   } else {
172     LogAndReportError(result, &out);
173   }
174 }
175
176 void RadioInstance::FMRadioUnsetAntennaChangeListener(const picojson::value& args, picojson::object& out) {
177   ScopeLogger();
178
179   PlatformResult result = manager_.UnsetAntennaChangeListener();
180
181   if (result) {
182     ReportSuccess(out);
183   } else {
184     LogAndReportError(result, &out);
185   }
186 }
187
188 }  // namespace radio
189 }  // namespace extension