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);
73 dbg("CP NOT READY, cp_count :%d", cp_count);
79 static enum tcore_hook_return on_hal_send(TcoreHal *hal, unsigned int data_len, void *data, void *user_data)
81 hook_hex_dump(TX, data_len, data);
82 return TCORE_HOOK_RETURN_CONTINUE;
85 static void on_hal_recv(TcoreHal *hal, unsigned int data_len, const void *data, void *user_data)
87 msg("=== RX data DUMP =====");
88 util_hex_dump(" ", data_len, data);
89 msg("=== RX data DUMP =====");
92 static gboolean on_load()
99 static int _get_cp_name(char **name)
103 char *svnet1_models[] = {
104 "F1", "S1", "M2", "H2", "H2_SDK",
105 "CRESPO", "STEALTHV", "SLP45", "Kessler", "P1P2",
106 "U1SLP", "U1HD", "SLP7_C210", "SLP10_C210", NULL
109 char *svnet2_models[] = { "SMDK4410", "SMDK4212", "TRATS2", "SLP_PQ_LTE", "SLP_NAPLES", "REDWOOD", "TRATS", NULL };
111 char *tty_models[] = { "QCT MSM8X55 SURF", "QCT MSM7x27a FFA", NULL };
116 dbg("[ error ] name is not empty");
120 memset(&u, '\0', sizeof(struct utsname));
124 dbg("u.nodename : [ %s ]", u.nodename);
126 for (i = 0; svnet1_models[i]; i++) {
127 if (!strcmp(u.nodename, svnet1_models[i])) {
128 *name = g_new0(char, 5);
129 strcpy(*name, "6260");
134 for (i = 0; svnet2_models[i]; i++) {
135 if (!strcmp(u.nodename, svnet2_models[i])) {
136 *name = g_new0(char, 5);
137 strcpy(*name, "6262");
142 for (i = 0; tty_models[i]; i++) {
143 if (!strcmp(u.nodename, tty_models[i])) {
144 *name = g_new0(char, 6);
145 strcpy(*name, "dpram");
150 dbg("[ error ] unknown model : (%s)", u.nodename);
155 static gboolean on_init(TcorePlugin *p)
158 struct global_data *gd;
159 // char *cp_name = 0;
165 gd = calloc(sizeof(struct global_data), 1);
171 gd->msg_auto_id_current = 0;
172 gd->msg_auto_id_start = 1;
173 gd->msg_auto_id_end = 255;
175 len = _get_cp_name(&cp_name);
177 dbg("[ error ] unsupport cp (name : %s)", cp_name);
182 /* FIXME: HAL will reside in Co-object.
183 * This HAL is just used as default before MUX setup.
184 * Each HAL has AT pasre functionality.
186 h = tcore_server_find_hal(tcore_plugin_ref_server(p), cp_name);
193 // set physical hal into plugin's userdata
196 tcore_plugin_link_user_data(p, gd);
198 tcore_hal_add_send_hook(h, on_hal_send, p);
199 tcore_hal_add_recv_callback(h, on_hal_recv, p);
204 s_network_init(p, h);
209 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,