* [PATCH 1/2] huawei: Remove existing Huawei EM770 plugin
@ 2010-07-02 3:04 Zhenhua Zhang
2010-07-02 3:04 ` [PATCH 2/2] huawei: Add Huawei EM770 modem support Zhenhua Zhang
2010-07-02 15:44 ` [PATCH 1/2] huawei: Remove existing Huawei EM770 plugin Denis Kenzior
0 siblings, 2 replies; 3+ messages in thread
From: Zhenhua Zhang @ 2010-07-02 3:04 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 8611 bytes --]
---
Makefile.am | 3 -
plugins/em770.c | 229 ---------------------------------------------------
plugins/ofono.rules | 2 -
plugins/udev.c | 26 ------
4 files changed, 0 insertions(+), 260 deletions(-)
delete mode 100644 plugins/em770.c
diff --git a/Makefile.am b/Makefile.am
index 96116a5..24aa886 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -232,9 +232,6 @@ builtin_sources += plugins/hso.c
builtin_modules += huawei
builtin_sources += plugins/huawei.c
-builtin_modules += em770
-builtin_sources += plugins/em770.c
-
builtin_modules += novatel
builtin_sources += plugins/novatel.c
diff --git a/plugins/em770.c b/plugins/em770.c
deleted file mode 100644
index de82f94..0000000
--- a/plugins/em770.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- *
- * oFono - Open Source Telephony
- *
- * Copyright (C) 2008-2010 Intel Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-
-#include <glib.h>
-#include <gatchat.h>
-#include <gattty.h>
-
-#define OFONO_API_SUBJECT_TO_CHANGE
-#include <ofono/plugin.h>
-#include <ofono/log.h>
-#include <ofono/modem.h>
-#include <ofono/call-barring.h>
-#include <ofono/call-forwarding.h>
-#include <ofono/call-meter.h>
-#include <ofono/call-settings.h>
-#include <ofono/devinfo.h>
-#include <ofono/message-waiting.h>
-#include <ofono/netreg.h>
-#include <ofono/phonebook.h>
-#include <ofono/sim.h>
-#include <ofono/sms.h>
-#include <ofono/ssn.h>
-#include <ofono/ussd.h>
-#include <ofono/gprs.h>
-#include <ofono/voicecall.h>
-
-#include <drivers/atmodem/vendor.h>
-
-struct em770_data {
- GAtChat *chat;
-};
-
-static int em770_probe(struct ofono_modem *modem)
-{
- struct em770_data *data;
-
- DBG("%p", modem);
-
- data = g_try_new0(struct em770_data, 1);
- if (!data)
- return -ENOMEM;
-
- ofono_modem_set_data(modem, data);
-
- return 0;
-}
-
-static void em770_remove(struct ofono_modem *modem)
-{
- struct em770_data *data = ofono_modem_get_data(modem);
-
- DBG("%p", modem);
-
- ofono_modem_set_data(modem, NULL);
-
- g_at_chat_unref(data->chat);
- g_free(data);
-}
-
-static void em770_debug(const char *str, void *user_data)
-{
- ofono_info("%s", str);
-}
-
-static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
-{
- struct ofono_modem *modem = user_data;
-
- DBG("");
-
- if (ok)
- ofono_modem_set_powered(modem, TRUE);
-}
-
-static int em770_enable(struct ofono_modem *modem)
-{
- struct em770_data *data = ofono_modem_get_data(modem);
- GAtSyntax *syntax;
- GIOChannel *channel;
- const char *device;
-
- DBG("%p", modem);
-
- device = ofono_modem_get_string(modem, "Device");
- if (!device)
- return -EINVAL;
-
- channel = g_at_tty_open(device, NULL);
- if (!channel)
- return -EIO;
-
- syntax = g_at_syntax_new_gsmv1();
- data->chat = g_at_chat_new(channel, syntax);
- g_at_syntax_unref(syntax);
- g_io_channel_unref(channel);
-
- if (!data->chat)
- return -EIO;
-
- g_at_chat_add_terminator(data->chat, "COMMAND NOT SUPPORT", -1, FALSE);
- g_at_chat_add_terminator(data->chat, "TOO MANY PARAMETERS", -1, FALSE);
-
- if (getenv("OFONO_AT_DEBUG"))
- g_at_chat_set_debug(data->chat, em770_debug, NULL);
-
- g_at_chat_send(data->chat, "ATE0", NULL, NULL, NULL, NULL);
-
- g_at_chat_send(data->chat, "AT+CFUN=1", NULL,
- cfun_enable, modem, NULL);
-
- return 0;
-}
-
-static void cfun_disable(gboolean ok, GAtResult *result, gpointer user_data)
-{
- struct ofono_modem *modem = user_data;
- struct em770_data *data = ofono_modem_get_data(modem);
-
- DBG("");
-
- g_at_chat_unref(data->chat);
- data->chat = NULL;
-
- if (ok)
- ofono_modem_set_powered(modem, FALSE);
-}
-
-static int em770_disable(struct ofono_modem *modem)
-{
- struct em770_data *data = ofono_modem_get_data(modem);
-
- DBG("%p", modem);
-
- if (!data->chat)
- return 0;
-
- g_at_chat_cancel_all(data->chat);
- g_at_chat_unregister_all(data->chat);
- g_at_chat_send(data->chat, "AT+CFUN=0", NULL,
- cfun_disable, modem, NULL);
-
- return -EINPROGRESS;
-}
-
-static void em770_pre_sim(struct ofono_modem *modem)
-{
- struct em770_data *data = ofono_modem_get_data(modem);
- struct ofono_sim *sim;
-
- DBG("%p", modem);
-
- ofono_devinfo_create(modem, 0, "atmodem", data->chat);
- sim = ofono_sim_create(modem, 0, "atmodem", data->chat);
- ofono_voicecall_create(modem, 0, "atmodem", data->chat);
-
- if (sim)
- ofono_sim_inserted_notify(sim, TRUE);
-}
-
-static void em770_post_sim(struct ofono_modem *modem)
-{
- struct em770_data *data = ofono_modem_get_data(modem);
- struct ofono_message_waiting *mw;
-
- DBG("%p", modem);
-
- ofono_ussd_create(modem, 0, "atmodem", data->chat);
- ofono_call_forwarding_create(modem, 0, "atmodem", data->chat);
- ofono_call_settings_create(modem, 0, "atmodem", data->chat);
- ofono_netreg_create(modem, 0, "atmodem", data->chat);
- ofono_call_meter_create(modem, 0, "atmodem", data->chat);
- ofono_call_barring_create(modem, 0, "atmodem", data->chat);
- ofono_ssn_create(modem, 0, "atmodem", data->chat);
- ofono_sms_create(modem, OFONO_VENDOR_QUALCOMM_MSM, "atmodem", data->chat);
- ofono_phonebook_create(modem, 0, "atmodem", data->chat);
-
- mw = ofono_message_waiting_create(modem);
- if (mw)
- ofono_message_waiting_register(mw);
-}
-
-static struct ofono_modem_driver em770_driver = {
- .name = "em770",
- .probe = em770_probe,
- .remove = em770_remove,
- .enable = em770_enable,
- .disable = em770_disable,
- .pre_sim = em770_pre_sim,
- .post_sim = em770_post_sim,
-};
-
-static int em770_init(void)
-{
- return ofono_modem_driver_register(&em770_driver);
-}
-
-static void em770_exit(void)
-{
- ofono_modem_driver_unregister(&em770_driver);
-}
-
-OFONO_PLUGIN_DEFINE(em770, "HUAWEI EM770 modem driver", VERSION,
- OFONO_PLUGIN_PRIORITY_DEFAULT, em770_init, em770_exit)
diff --git a/plugins/ofono.rules b/plugins/ofono.rules
index 4d68023..06c5c8f 100644
--- a/plugins/ofono.rules
+++ b/plugins/ofono.rules
@@ -331,8 +331,6 @@ ENV{DEVTYPE}!="usb_device", GOTO="ofono_end"
# HUAWEI Technology
ATTRS{idVendor}=="12d1", ENV{OFONO_DRIVER}="huawei"
-# HUAWEI EM770
-ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1404", ENV{OFONO_DRIVER}="em770"
# Novatel Wireless
ATTRS{idVendor}=="1410", ENV{OFONO_DRIVER}="novatel"
diff --git a/plugins/udev.c b/plugins/udev.c
index 178f383..09ee93e 100644
--- a/plugins/udev.c
+++ b/plugins/udev.c
@@ -258,30 +258,6 @@ static void add_huawei(struct ofono_modem *modem,
ofono_modem_register(modem);
}
-static void add_em770(struct ofono_modem *modem,
- struct udev_device *udev_device)
-{
- const char *devnode, *intfnum;
- struct udev_device *parent;
- int registered;
-
- registered = ofono_modem_get_integer(modem, "Registered");
- if (registered != 0)
- return;
-
- parent = udev_device_get_parent(udev_device);
- parent = udev_device_get_parent(parent);
- intfnum = udev_device_get_sysattr_value(parent, "bInterfaceNumber");
-
- if (g_strcmp0(intfnum, "02") == 0) {
- devnode = udev_device_get_devnode(udev_device);
- ofono_modem_set_string(modem, "Device", devnode);
-
- ofono_modem_set_integer(modem, "Registered", 1);
- ofono_modem_register(modem);
- }
-}
-
static void add_novatel(struct ofono_modem *modem,
struct udev_device *udev_device)
{
@@ -361,8 +337,6 @@ static void add_modem(struct udev_device *udev_device)
add_hso(modem, udev_device);
else if (g_strcmp0(driver, "huawei") == 0)
add_huawei(modem, udev_device);
- else if (g_strcmp0(driver, "em770") == 0)
- add_em770(modem, udev_device);
else if (g_strcmp0(driver, "novatel") == 0)
add_novatel(modem, udev_device);
}
--
1.6.3.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] huawei: Add Huawei EM770 modem support
2010-07-02 3:04 [PATCH 1/2] huawei: Remove existing Huawei EM770 plugin Zhenhua Zhang
@ 2010-07-02 3:04 ` Zhenhua Zhang
2010-07-02 15:44 ` [PATCH 1/2] huawei: Remove existing Huawei EM770 plugin Denis Kenzior
1 sibling, 0 replies; 3+ messages in thread
From: Zhenhua Zhang @ 2010-07-02 3:04 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 3834 bytes --]
Huawei EM770W is a 3G WCDMA modem that supports HSPA/UMTS/EDGE/GPRS/GSM
data service and WCDMA/GSM short message services. It also has voice
call capability that supports both 2G and 3G network.
---
plugins/huawei.c | 23 +++++++++++++++++++++++
plugins/ofono.rules | 4 ++++
plugins/udev.c | 8 ++++++++
3 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/plugins/huawei.c b/plugins/huawei.c
index 7c8703e..cfc693d 100644
--- a/plugins/huawei.c
+++ b/plugins/huawei.c
@@ -43,6 +43,13 @@
#include <ofono/gprs.h>
#include <ofono/gprs.h>
#include <ofono/gprs-context.h>
+#include <ofono/voicecall.h>
+#include <ofono/call-forwarding.h>
+#include <ofono/call-settings.h>
+#include <ofono/call-barring.h>
+#include <ofono/ssn.h>
+#include <ofono/phonebook.h>
+#include <ofono/message-waiting.h>
#include <ofono/log.h>
#include <drivers/atmodem/atutil.h>
@@ -326,12 +333,16 @@ static void huawei_pre_sim(struct ofono_modem *modem)
ofono_devinfo_create(modem, 0, "atmodem", data->pcui);
data->sim = ofono_sim_create(modem, 0, "atmodem", data->pcui);
+
+ if (ofono_modem_get_boolean(modem, "HasVoice") == TRUE)
+ ofono_voicecall_create(modem, 0, "atmodem", data->pcui);
}
static void huawei_post_sim(struct ofono_modem *modem)
{
struct huawei_data *data = ofono_modem_get_data(modem);
struct ofono_netreg *netreg;
+ struct ofono_message_waiting *mw;
DBG("%p", modem);
@@ -348,6 +359,18 @@ static void huawei_post_sim(struct ofono_modem *modem)
if (data->gprs && data->gc)
ofono_gprs_add_context(data->gprs, data->gc);
+
+ if (ofono_modem_get_boolean(modem, "HasVoice") == TRUE) {
+ ofono_call_forwarding_create(modem, 0, "atmodem", data->pcui);
+ ofono_call_settings_create(modem, 0, "atmodem", data->pcui);
+ ofono_call_barring_create(modem, 0, "atmodem", data->pcui);
+ ofono_ssn_create(modem, 0, "atmodem", data->pcui);
+ ofono_phonebook_create(modem, 0, "atmodem", data->pcui);
+
+ mw = ofono_message_waiting_create(modem);
+ if (mw)
+ ofono_message_waiting_register(mw);
+ }
}
static struct ofono_modem_driver huawei_driver = {
diff --git a/plugins/ofono.rules b/plugins/ofono.rules
index 06c5c8f..826b0da 100644
--- a/plugins/ofono.rules
+++ b/plugins/ofono.rules
@@ -24,6 +24,10 @@ ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1401", ENV{OFONO_IFACE_NUM}=="02", E
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1402", ENV{OFONO_IFACE_NUM}=="00", ENV{OFONO_HUAWEI_TYPE}="Modem"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1402", ENV{OFONO_IFACE_NUM}=="02", ENV{OFONO_HUAWEI_TYPE}="Pcui"
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1404", ENV{OFONO_IFACE_NUM}=="00", ENV{OFONO_HUAWEI_TYPE}="Modem"
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1404", ENV{OFONO_IFACE_NUM}=="02", ENV{OFONO_HUAWEI_TYPE}="Pcui"
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1404", ENV{OFONO_HUAWEI_VOICE}="1"
+
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1405", ENV{OFONO_IFACE_NUM}=="03", ENV{OFONO_HUAWEI_TYPE}="Modem"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1405", ENV{OFONO_IFACE_NUM}=="00", ENV{OFONO_HUAWEI_TYPE}="Pcui"
diff --git a/plugins/udev.c b/plugins/udev.c
index 09ee93e..75f8b6c 100644
--- a/plugins/udev.c
+++ b/plugins/udev.c
@@ -227,6 +227,14 @@ static void add_huawei(struct ofono_modem *modem,
const char *name = udev_list_entry_get_name(entry);
type = udev_list_entry_get_value(entry);
+ if (g_str_equal(name, "OFONO_HUAWEI_VOICE") == TRUE) {
+ gboolean value = g_str_equal(type, "1");
+
+ ofono_modem_set_boolean(modem, "HasVoice", value);
+ entry = udev_list_entry_get_next(entry);
+ continue;
+ }
+
if (g_str_equal(name, "OFONO_HUAWEI_TYPE") != TRUE) {
entry = udev_list_entry_get_next(entry);
continue;
--
1.6.3.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 1/2] huawei: Remove existing Huawei EM770 plugin
2010-07-02 3:04 [PATCH 1/2] huawei: Remove existing Huawei EM770 plugin Zhenhua Zhang
2010-07-02 3:04 ` [PATCH 2/2] huawei: Add Huawei EM770 modem support Zhenhua Zhang
@ 2010-07-02 15:44 ` Denis Kenzior
1 sibling, 0 replies; 3+ messages in thread
From: Denis Kenzior @ 2010-07-02 15:44 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 413 bytes --]
Hi Zhenhua,
On 07/01/2010 10:04 PM, Zhenhua Zhang wrote:
> ---
> Makefile.am | 3 -
> plugins/em770.c | 229 ---------------------------------------------------
> plugins/ofono.rules | 2 -
> plugins/udev.c | 26 ------
> 4 files changed, 0 insertions(+), 260 deletions(-)
> delete mode 100644 plugins/em770.c
Both patches have been applied. Thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-07-02 15:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-02 3:04 [PATCH 1/2] huawei: Remove existing Huawei EM770 plugin Zhenhua Zhang
2010-07-02 3:04 ` [PATCH 2/2] huawei: Add Huawei EM770 modem support Zhenhua Zhang
2010-07-02 15:44 ` [PATCH 1/2] huawei: Remove existing Huawei EM770 plugin Denis Kenzior
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.