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.
25 #include <sys/utsname.h>
34 #include <core_object.h>
37 #include "s_network.h"
46 #include "s_phonebook.h"
50 static int cp_count = 0;
52 #define MAX_CP_QUERY_COUNT 60
54 static gboolean _query_cp_state(gpointer data)
56 gboolean power_state = FALSE;
57 TcorePlugin *p = NULL;
58 CoreObject* obj = NULL;
61 p = (TcorePlugin*)data;
63 if(cp_count > MAX_CP_QUERY_COUNT){
64 dbg("cp query counter exceeds MAX_CP_QUERY_COUNT");
67 obj = tcore_plugin_ref_core_object(p, "modem");
68 h = tcore_object_get_hal(obj);
69 power_state = tcore_hal_get_power_state(h);
71 if(TRUE == power_state){
73 s_modem_send_poweron(p);
77 dbg("CP NOT READY, cp_count :%d", cp_count);
83 static enum tcore_hook_return on_hal_send(TcoreHal *hal, unsigned int data_len, void *data, void *user_data)
85 hook_hex_dump(TX, data_len, data);
86 return TCORE_HOOK_RETURN_CONTINUE;
89 static void on_hal_recv(TcoreHal *hal, unsigned int data_len, const void *data, void *user_data)
91 msg("=== RX data DUMP =====");
92 util_hex_dump(" ", data_len, data);
93 msg("=== RX data DUMP =====");
96 static gboolean on_load()
103 static int _get_cp_name(char **name)
107 char *svnet1_models[] = {
108 "F1", "S1", "M2", "H2", "H2_SDK",
109 "CRESPO", "STEALTHV", "SLP45", "Kessler", "P1P2",
110 "U1SLP", "U1HD", "SLP7_C210", "SLP10_C210", NULL
113 char *svnet2_models[] = { "SMDK4410", "SMDK4212", "SLP_PQ", "SLP_PQ_LTE", "SLP_NAPLES", "REDWOOD", "TRATS", NULL };
115 char *tty_models[] = { "QCT MSM8X55 SURF", "QCT MSM7x27a FFA", NULL };
120 dbg("[ error ] name is not empty");
124 memset(&u, '\0', sizeof(struct utsname));
128 dbg("u.nodename : [ %s ]", u.nodename);
130 for (i = 0; svnet1_models[i]; i++) {
131 if (!strcmp(u.nodename, svnet1_models[i])) {
132 *name = g_new0(char, 5);
133 strcpy(*name, "6260");
138 for (i = 0; svnet2_models[i]; i++) {
139 if (!strcmp(u.nodename, svnet2_models[i])) {
140 *name = g_new0(char, 5);
141 strcpy(*name, "6262");
146 for (i = 0; tty_models[i]; i++) {
147 if (!strcmp(u.nodename, tty_models[i])) {
148 *name = g_new0(char, 6);
149 strcpy(*name, "dpram");
154 dbg("[ error ] unknown model : (%s)", u.nodename);
159 static gboolean on_init(TcorePlugin *p)
162 struct global_data *gd;
163 // char *cp_name = 0;
169 gd = calloc(sizeof(struct global_data), 1);
175 gd->msg_auto_id_current = 0;
176 gd->msg_auto_id_start = 1;
177 gd->msg_auto_id_end = 255;
179 len = _get_cp_name(&cp_name);
181 dbg("[ error ] unsupport cp (name : %s)", cp_name);
186 /* FIXME: HAL will reside in Co-object.
187 * This HAL is just used as default before MUX setup.
188 * Each HAL has AT pasre functionality.
190 h = tcore_server_find_hal(tcore_plugin_ref_server(p), cp_name);
197 // set physical hal into plugin's userdata
200 tcore_plugin_link_user_data(p, gd);
202 tcore_hal_add_send_hook(h, on_hal_send, p);
203 tcore_hal_add_recv_callback(h, on_hal_recv, p);
208 s_network_init(p, h);
216 tcore_hal_set_power(h, TRUE);
217 //wait until CP is ready
218 g_timeout_add_full(G_PRIORITY_HIGH,500,_query_cp_state, p, 0 );
222 static void on_unload(TcorePlugin *p)
224 struct global_data *gd;
231 gd = tcore_plugin_ref_user_data(p);
237 struct tcore_plugin_define_desc plugin_define_desc = {
239 .priority = TCORE_PLUGIN_PRIORITY_MID,