4 * Copyright (c) 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Kyeongchul Kim <kyeongchul.kim@samsung.com>
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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.
31 #include "TapiCommon.h"
32 #include "ITapiPower.h"
33 #include "TelDisplay.h"
34 #include "TapiEvent.h"
36 #define TEST_DEBUG(frmt, args...) \
37 {do { fprintf(stderr, "[Pow Test][%s:%04d] "frmt "\n", __func__, __LINE__, ##args); } while (FALSE) ;}
50 #define NUM_OF_POWER_EVENT 4
52 static unsigned int power_subscription_id[NUM_OF_POWER_EVENT] = {0, };
54 static unsigned int display_subscription_id = 0;
56 void __PrintBatteryStatus(void *pData)
58 tapi_power_battery_status_level_t* pBattLevel;
60 pBattLevel = (tapi_power_battery_status_level_t*)pData;
62 case TAPI_POWER_BATT_STAT_POWER_OFF_LEVEL:
63 TEST_DEBUG("Battery Level [Power Off]");
65 case TAPI_POWER_BATT_STAT_CRIT_LOW_LEVEL:
66 TEST_DEBUG("Battery Level [Critical-Low]");
68 case TAPI_POWER_BATT_STAT_LOW_LEVEL:
69 TEST_DEBUG("Battery Level [Low Battery]");
71 case TAPI_POWER_BATT_STAT_NORMAL_LEVEL:
72 TEST_DEBUG("Battery Level [Normal Level]");
75 TEST_DEBUG("Unknown Battery Level");
82 void __PrintFlightModeStatus(void *pData)
84 tapi_power_flight_mode_resp_type_t* pFlightStatus;
86 pFlightStatus = (tapi_power_flight_mode_resp_type_t *)pData;
88 switch(*pFlightStatus){
89 case TAPI_POWER_FLIGHT_MODE_RESP_ON:
90 TEST_DEBUG("Flight Mode [On]");
92 case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
93 TEST_DEBUG("Flight Mode [Off]");
95 case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
96 TEST_DEBUG("Flight Mode [Mode Change Fail]");
99 TEST_DEBUG("Unknown Flight Mode");
105 void __PrintDisplayIconInfo(void *pData)
107 tapi_display_icon_info_t* pDisplayIcon = NULL;
109 pDisplayIcon = (tapi_display_icon_info_t*)pData;
111 switch(pDisplayIcon->rssi){
112 case TAPI_DISPLAY_RSSI_0:
113 TEST_DEBUG("RSSI [0]");
115 case TAPI_DISPLAY_RSSI_1:
116 TEST_DEBUG("RSSI [1]");
118 case TAPI_DISPLAY_RSSI_2:
119 TEST_DEBUG("RSSI [2]");
121 case TAPI_DISPLAY_RSSI_3:
122 TEST_DEBUG("RSSI [3]");
124 case TAPI_DISPLAY_RSSI_4:
125 TEST_DEBUG("RSSI [4]");
127 case TAPI_DISPLAY_RSSI_5:
128 TEST_DEBUG("RSSI [5]");
130 case TAPI_DISPLAY_RSSI_6:
131 TEST_DEBUG("RSSI [6]");
134 TEST_DEBUG("Unknow RSSI Value");
139 switch(pDisplayIcon->batt){
140 case TAPI_POWER_PHONE_BATT_LEVEL0:
141 TEST_DEBUG("Battery Level [0]");;
143 case TAPI_POWER_PHONE_BATT_LEVEL1:
144 TEST_DEBUG("Battery Level [1]");
146 case TAPI_POWER_PHONE_BATT_LEVEL2:
147 TEST_DEBUG("Battery Level [2]");
149 case TAPI_POWER_PHONE_BATT_LEVEL3:
150 TEST_DEBUG("Battery Level [3]");
152 case TAPI_POWER_PHONE_BATT_LEVEL4:
153 TEST_DEBUG("Battery Level [4]");
155 case TAPI_POWER_PHONE_BATT_LEVEL5:
156 TEST_DEBUG("Battery Level [5]");
158 case TAPI_POWER_PHONE_BATT_LEVEL_INIT:
159 TEST_DEBUG("Battery Level [Init]");
162 TEST_DEBUG("Unknow Battery Level Value");
169 void power_async_event_callback(TelTapiEvent_t* event,void *data )
172 TEST_DEBUG("$$$$$$ POWER EVENT NOTIFICATION $$$$$$");
173 TEST_DEBUG("Request ID : [0x%x]", event->RequestId);
175 switch(event->EventType)
177 case TAPI_EVENT_POWER_PHONE_OFF:
178 TEST_DEBUG("Event Type: [TAPI_EVENT_POWER_PHONE_OFF]");
180 case TAPI_EVENT_POWER_BATT_STAT_IND:
181 TEST_DEBUG("Event Type: [TAPI_EVENT_POWER_BATT_STAT_IND]");
182 __PrintBatteryStatus(event->pData);
184 case TAPI_EVENT_POWER_FLIGHT_MODE_RESP:
185 TEST_DEBUG("Event Type: [TAPI_EVENT_POWER_FLIGHT_MODE_RESP]");
186 __PrintFlightModeStatus(event->pData);
188 case TAPI_EVENT_DISPLAY_ICON_INFO_IND:
189 TEST_DEBUG("Event Type: [TAPI_EVENT_DISPLAY_ICON_INFO_IND]");
190 __PrintDisplayIconInfo(event->pData);
193 TEST_DEBUG("Event Type: unknown event:[%d]", event->EventType);
196 TEST_DEBUG("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
201 int power_read_key_input(void)
204 char buf[512] = {0, };
206 TapiResult_t ret_val = TAPI_API_SUCCESS;
208 memset(buf,0, sizeof(buf));
209 memset(msg,0,sizeof(msg));
211 printf("******* Power & Display Test MENU ******************\n");
212 printf("*************** Asynchronous API *****************\n");
213 printf("Power Off[PwrOff]\n");
214 printf("Power On[PwrOn]\n");
215 printf("Reset [Reset]\n");
216 printf("Flight Mode On[FlightModeOn] \n");
217 printf("Flight Mode Off[FlightModeOff] \n");
218 printf("Reboot Modem[RebootModem] \n");
219 printf("Ramdump [Ramdump] \n");
220 printf("**************** Synchronous API *****************\n");
221 printf("Get Power status[GetPwrStatus] \n");
222 printf("Quit Power Test[quit] \n");
223 printf("************************************************\n");
225 ret = read(0, buf, sizeof(buf));
235 if(strncmp(buf, "PwrOff", sizeof("PwrOff")-1) == 0)
237 ret_val = tel_process_power_command(TAPI_PHONE_POWER_OFF);
238 TEST_DEBUG("tel_process_power_command return value is %d \n",ret_val);
241 else if(strncmp(buf, "PwrOn", sizeof("PwrOn")-1) == 0)
243 ret_val = tel_process_power_command(TAPI_PHONE_POWER_ON);
244 TEST_DEBUG("tel_process_power_command return value is %d \n",ret_val);
247 else if(strncmp(buf, "Reset", sizeof("Reset")-1) == 0)
249 ret_val = tel_process_power_command(TAPI_PHONE_POWER_RESET);
250 TEST_DEBUG("tel_process_power_command return value is %d \n",ret_val);
253 else if(strncmp(buf, "FlightModeOn", sizeof("FlightModeOn")-1) == 0)
255 ret_val = tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_ENTER);
256 TEST_DEBUG("tel_set_flight_mode return value is %d \n",ret_val);
259 else if(strncmp(buf, "FlightModeOff", sizeof("FlightModeOff")-1) == 0)
261 ret_val = tel_set_flight_mode(TAPI_POWER_FLIGHT_MODE_LEAVE);
262 TEST_DEBUG("tel_set_flight_mode return value is %d \n",ret_val);
265 else if(strncmp(buf, "RebootModem", sizeof("RebootModem")-1) == 0)
267 ret_val = tel_reset_modem();
268 TEST_DEBUG("tel_reset_modem return value is %d \n",ret_val);
271 else if(strncmp(buf, "Ramdump", sizeof("Ramdump")-1) == 0)
273 ret_val = tel_enforce_ramdump_of_modem();
274 TEST_DEBUG("tel_enforce_ramdump_of_modem return value is %d",ret_val);
276 else if(strncmp(buf, "quit", sizeof("quit")-1) == 0)
287 void power_select_loop(void)
297 ret = select(0 + 1, &readfds, NULL, NULL, NULL);
300 if (FD_ISSET(0, &readfds))
302 if(power_read_key_input() < 0)
310 int power_test_unsubscribe_tapi_event(void)
313 TapiResult_t api_err = TAPI_API_SUCCESS;
316 for(i=0;i<NUM_OF_POWER_EVENT; i++){
317 api_err = tel_deregister_event(power_subscription_id[i]);
318 if(api_err != TAPI_API_SUCCESS){
319 TEST_DEBUG("tel_deregister_event isn't unsubscribed. sub id is %d api_err is %d\n",power_subscription_id[i],api_err);
331 int power_test_subscribe_tapi_events (void)
337 TapiResult_t api_err = TAPI_API_SUCCESS;
339 int PowerEvtList[NUM_OF_POWER_EVENT] = {
340 TAPI_EVENT_POWER_PHONE_OFF,
341 TAPI_EVENT_POWER_BATT_STAT_IND,
342 TAPI_EVENT_POWER_FLIGHT_MODE_RESP,
343 TAPI_EVENT_POWER_SERVICE_READY_IND,
346 //TEST_DEBUG("########### Power TEST #############");
347 if(tel_init() == TAPI_API_SUCCESS)
350 for(i=0;i<NUM_OF_POWER_EVENT; i++){
352 api_err = tel_register_event(PowerEvtList[i], &power_subscription_id[i],(TelAppCallback)&power_async_event_callback,NULL);
355 if(api_err != TAPI_API_SUCCESS){
356 TEST_DEBUG("tel_register_event isn't subscribed. sub id is %d api_err is %d\n",power_subscription_id[i],api_err);
364 api_err = tel_register_event(TAPI_EVENT_DISPLAY_ICON_INFO_IND, &display_subscription_id,(TelAppCallback)&power_async_event_callback,NULL);
366 if(api_err != TAPI_API_SUCCESS){
367 TEST_DEBUG("tel_register_event isn't subscribed. sub id is %d api_err is %d\n",display_subscription_id,api_err);
373 TEST_DEBUG("tel_init() failed");
378 int power_test_main(int argc, char *argv[])