tizen 2.4 release
[framework/multimedia/libmm-radio.git] / test / mm_radio_rt_api_test.c
1 /*
2  * libmm-radio
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: JongHyuk Choi <jhchoi.choi@samsung.com>, YoungHwan An <younghwan_.an@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 #include <stdio.h>
22
23 #include "mm_radio.h"
24 #include "mm_radio_rt_api_test.h"
25
26 #define MENU_ITEM_MAX   20
27 #define _MAX_INPUT_STRING_ 100
28
29 static int __menu(void);
30 static void __call_api(int choosen);
31 static int __msg_rt_callback(int message, void *param, void *user_param);
32
33 static MMHandleType g_my_radio = 0;
34
35 void __call_api(int choosen)
36 {
37         int ret = MM_ERROR_NONE;
38
39         switch (choosen) {
40                 case 1: {
41                                 RADIO_TEST__(mm_radio_create(&g_my_radio);)
42                                 RADIO_TEST__(mm_radio_set_message_callback(g_my_radio, __msg_rt_callback, g_my_radio);)
43                         }
44                         break;
45
46                 case 2: {
47                                 RADIO_TEST__(mm_radio_destroy(g_my_radio);)
48                                 g_my_radio = 0;
49                         }
50                         break;
51
52                 case 3: {
53                                 RADIO_TEST__(mm_radio_realize(g_my_radio);)
54                         }
55                         break;
56
57                 case 4: {
58                                 RADIO_TEST__(mm_radio_unrealize(g_my_radio);)
59                         }
60                         break;
61
62                 case 7: {
63                                 MMRadioStateType state = 0;
64                                 RADIO_TEST__(mm_radio_get_state(g_my_radio, &state);)
65
66                                 printf("state : %d\n", state);
67                         }
68                         break;
69
70                 case 8: {
71                                 RADIO_TEST__(mm_radio_start(g_my_radio);)
72                         }
73                         break;
74
75                 case 9: {
76                                 RADIO_TEST__(mm_radio_stop(g_my_radio);)
77                         }
78                         break;
79
80                 case 10: {
81                                 int direction = 0;
82                                 printf("input seek direction(0:UP/1:DOWN) : ");
83                                 if (scanf("%d", &direction) == 0)
84                                         return;
85
86                                 RADIO_TEST__(mm_radio_seek(g_my_radio, direction);)
87                         }
88                         break;
89
90                 case 11: {
91                                 int freq = 0;
92                                 printf("input freq : ");
93                                 if (scanf("%d", &freq) == 0)
94                                         return;
95
96                                 RADIO_TEST__(mm_radio_set_frequency(g_my_radio, freq);)
97                         }
98                         break;
99
100                 case 12: {
101                                 int freq = 0;
102                                 RADIO_TEST__(mm_radio_get_frequency(g_my_radio, &freq);)
103
104                                 printf("freq : %d\n", freq);
105                         }
106                         break;
107
108                 case 13: {
109                                 RADIO_TEST__(mm_radio_scan_start(g_my_radio);)
110                         }
111                         break;
112
113                 case 14: {
114                                 RADIO_TEST__(mm_radio_scan_stop(g_my_radio);)
115                         }
116                         break;
117
118                 case 16: {
119                                 int muted = 0;
120                                 printf("select one(0:UNMUTE/1:MUTE) : ");
121                                 if (scanf("%d", &muted) == 0)
122                                         return;
123                                 RADIO_TEST__(mm_radio_set_mute(g_my_radio, muted);)
124                         }
125                         break;
126
127                 case 17: {
128                                 MMRadioRegionType type = 0;
129                                 RADIO_TEST__(mm_radio_get_region_type(g_my_radio, &type);)
130                                 printf("region type : %d\n", type);
131                         }
132                         break;
133
134                 case 18: {
135                                 unsigned int min_freq = 0;
136                                 unsigned int max_freq = 0;
137                                 RADIO_TEST__(mm_radio_get_region_frequency_range(g_my_radio, &min_freq, &max_freq);)
138                                 printf("region band range: %d ~ %d KHz\n", min_freq, max_freq);
139                         }
140                         break;
141                 case 19: {
142                                 int signal_strength = 0;
143                                 RADIO_TEST__(mm_radio_get_signal_strength(g_my_radio, &signal_strength);)
144                                 printf("signal strength is : %d \n", signal_strength);
145                         }
146                         break;
147                 case 20: {
148                                 int channel_spacing = 0;
149                                 RADIO_TEST__(mm_radio_get_channel_spacing(g_my_radio, &channel_spacing);)
150                                 printf("channel_spacing is : %d \n", channel_spacing);
151                         }
152                         break;
153
154                 default:
155                         break;
156         }
157 }
158
159 int mm_radio_rt_api_test(void)
160 {
161         while (1) {
162                 int choosen = 0;
163
164                 choosen = __menu();
165
166                 if (choosen == -1)
167                         continue;
168
169                 if (choosen == 0)
170                         break;
171
172                 __call_api(choosen);
173         }
174
175         printf("radio test client finished\n");
176
177         return 0;
178 }
179
180 int __menu(void)
181 {
182         int menu_item = 0;
183
184         printf("---------------------------------------------------------\n");
185         printf("mm-radio rt api test. try now!\n");
186         printf("---------------------------------------------------------\n");
187         printf("[1] mm_radio_create\n");
188         printf("[2] mm_radio_destroy\n");
189         printf("[3] mm_radio_realize\n");
190         printf("[4] mm_radio_unrealize\n");
191         printf("[7] mm_radio_get_state\n");
192         printf("[8] mm_radio_start\n");
193         printf("[9] mm_radio_stop\n");
194         printf("[10] mm_radio_seek\n");
195         printf("[11] mm_radio_set_frequency(ex.107700)\n");
196         printf("[12] mm_radio_get_frequency\n");
197         printf("[13] mm_radio_scan_start\n");
198         printf("[14] mm_radio_scan_stop\n");
199         printf("[16] mm_radio_set_mute\n");
200         printf("[17] mm_radio_get_region_type\n");
201         printf("[18] mm_radio_get_region_frequency_range\n");
202         printf("[19] mm_radio_signal_strength\n");
203         printf("[20] mm_radio_get_channel_spacing\n");
204         printf("[0] quit\n");
205         printf("---------------------------------------------------------\n");
206         printf("choose one : ");
207
208         if (scanf("%d", &menu_item) == 0) {
209                 char temp[_MAX_INPUT_STRING_];
210                 if (scanf("%s", temp) == 0) {
211                         printf("Error while flushing the input buffer - but lets continue\n");
212                 }
213                 return -1;
214         }
215
216
217         if (menu_item > MENU_ITEM_MAX)
218                 menu_item = -1;
219
220         return menu_item;
221 }
222
223
224 int __msg_rt_callback(int message, void *pParam, void *user_param)
225 {
226         MMMessageParamType *param = (MMMessageParamType *)pParam;
227         MMHandleType radio = (MMHandleType) user_param;
228         int ret = 0;
229
230         printf("incomming message : %d\n", message);
231
232         switch (message) {
233                 case MM_MESSAGE_STATE_CHANGED:
234
235                         printf("MM_MESSAGE_STATE_CHANGED: current : %d    old : %d\n"
236                                , param->state.current, param->state.previous);
237                         break;
238                 case MM_MESSAGE_RADIO_SCAN_START:
239                         printf("MM_MESSAGE_RADIO_SCAN_START\n");
240                         break;
241                 case MM_MESSAGE_RADIO_SCAN_INFO:
242                         assert(param);
243                         printf("MM_MESSAGE_RADIO_SCAN_INFO : freq : %d\n", param->radio_scan.frequency);
244                         break;
245                 case MM_MESSAGE_RADIO_SCAN_STOP:
246                         printf("MM_MESSAGE_RADIO_SCAN_STOP\n");
247                         break;
248                 case MM_MESSAGE_RADIO_SCAN_FINISH:
249                         printf("MM_MESSAGE_RADIO_SCAN_FINISHED\n");
250                         RADIO_TEST__(mm_radio_scan_stop(radio);)
251                         break;
252                 case MM_MESSAGE_RADIO_SEEK_START:
253                         printf("MM_MESSAGE_RADIO_SEEK_START\n");
254                         break;
255                 case MM_MESSAGE_RADIO_SEEK_FINISH:
256                         printf("MM_MESSAGE_RADIO_SEEK_FINISHED : freq : %d\n", param->radio_scan.frequency);
257                         break;
258                 case MM_MESSAGE_STATE_INTERRUPTED:
259                         printf("MM_MESSAGE_STATE_INTERRUPTED code - %d\n", param->code);
260                         break;
261                 case MM_MESSAGE_READY_TO_RESUME:
262                         printf("MM_MESSAGE_READY_TO_RESUME\n");
263                         RADIO_TEST__(mm_radio_start(radio);)
264                         break;
265                 default:
266                         printf("ERROR : unknown message received!\n");
267                         break;
268         }
269
270         return true;
271 }