4 * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Hayoon Ko <hayoon.ko@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.
24 #include <sys/utsname.h>
31 #include <core_object.h>
34 #include "s_network.h"
43 #include "s_phonebook.h"
47 static int cp_count = 0;
49 #define MAX_CP_QUERY_COUNT 60
51 static gboolean _query_cp_state(gpointer data)
53 gboolean power_state = FALSE;
54 TcorePlugin *p = NULL;
55 CoreObject* obj = NULL;
58 p = (TcorePlugin*)data;
60 if(cp_count > MAX_CP_QUERY_COUNT){
61 dbg("cp query counter exceeds MAX_CP_QUERY_COUNT");
64 obj = tcore_plugin_ref_core_object(p, "modem");
65 h = tcore_object_get_hal(obj);
66 power_state = tcore_hal_get_power_state(h);
68 if(TRUE == power_state){
70 s_modem_send_poweron(p);
74 dbg("CP NOT READY, cp_count :%d", cp_count);
80 static enum tcore_hook_return on_hal_send(TcoreHal *hal, unsigned int data_len, void *data, void *user_data)
82 hook_hex_dump(TX, data_len, data);
83 return TCORE_HOOK_RETURN_CONTINUE;
86 static void on_hal_recv(TcoreHal *hal, unsigned int data_len, const void *data, void *user_data)
88 msg("=== RX data DUMP =====");
89 util_hex_dump(" ", data_len, data);
90 msg("=== RX data DUMP =====");
93 static gboolean on_load()
100 static int _get_cp_name(char **name)
104 char *svnet1_models[] = {
105 "F1", "S1", "M2", "H2", "H2_SDK",
106 "CRESPO", "STEALTHV", "SLP45", "Kessler", "P1P2",
107 "U1SLP", "U1HD", "SLP7_C210", "SLP10_C210", NULL
110 char *svnet2_models[] = { "SMDK4410", "SMDK4212", "TRATS2", "SLP_PQ_LTE", "SLP_NAPLES", "REDWOOD", "TRATS", NULL };
112 char *tty_models[] = { "QCT MSM8X55 SURF", "QCT MSM7x27a FFA", NULL };
117 dbg("[ error ] name is not empty");
121 memset(&u, '\0', sizeof(struct utsname));
125 dbg("u.nodename : [ %s ]", u.nodename);
127 for (i = 0; svnet1_models[i]; i++) {
128 if (!strcmp(u.nodename, svnet1_models[i])) {
129 *name = g_new0(char, 5);
130 strcpy(*name, "6260");
135 for (i = 0; svnet2_models[i]; i++) {
136 if (!strcmp(u.nodename, svnet2_models[i])) {
137 *name = g_new0(char, 5);
138 strcpy(*name, "6262");
143 for (i = 0; tty_models[i]; i++) {
144 if (!strcmp(u.nodename, tty_models[i])) {
145 *name = g_new0(char, 6);
146 strcpy(*name, "dpram");
151 dbg("[ error ] unknown model : (%s)", u.nodename);
156 static gboolean on_init(TcorePlugin *p)
159 struct global_data *gd;
160 // char *cp_name = 0;
166 gd = calloc(sizeof(struct global_data), 1);
172 gd->msg_auto_id_current = 0;
173 gd->msg_auto_id_start = 1;
174 gd->msg_auto_id_end = 255;
176 len = _get_cp_name(&cp_name);
178 dbg("[ error ] unsupport cp (name : %s)", cp_name);
183 /* FIXME: HAL will reside in Co-object.
184 * This HAL is just used as default before MUX setup.
185 * Each HAL has AT pasre functionality.
187 h = tcore_server_find_hal(tcore_plugin_ref_server(p), cp_name);
194 // set physical hal into plugin's userdata
197 tcore_plugin_link_user_data(p, gd);
199 tcore_hal_add_send_hook(h, on_hal_send, p);
200 tcore_hal_add_recv_callback(h, on_hal_recv, p);
205 s_network_init(p, h);
210 s_phonebook_init(p, h);
215 tcore_hal_set_power(h, TRUE);
216 //wait until CP is ready
217 g_timeout_add_full(G_PRIORITY_HIGH,500,_query_cp_state, p, 0 );
221 static void on_unload(TcorePlugin *p)
223 struct global_data *gd;
230 gd = tcore_plugin_ref_user_data(p);
236 struct tcore_plugin_define_desc plugin_define_desc = {
238 .priority = TCORE_PLUGIN_PRIORITY_MID,