summaryrefslogtreecommitdiff
path: root/plugins/hso.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/hso.c')
-rw-r--r--plugins/hso.c141
1 files changed, 1 insertions, 140 deletions
diff --git a/plugins/hso.c b/plugins/hso.c
index 21df00df..0afff30c 100644
--- a/plugins/hso.c
+++ b/plugins/hso.c
@@ -32,98 +32,10 @@
#define CONNMAN_API_SUBJECT_TO_CHANGE
#include <connman/plugin.h>
#include <connman/device.h>
-#include <connman/resolver.h>
#include <connman/log.h>
-#include "modem.h"
-
struct hso_data {
int index;
- struct modem_data *modem;
-};
-
-static void owandata_callback(const char *buf, void *user_data)
-{
- //struct hso_data *data = user_data;
- char *str, ip[16], nm[16], ns1[16], ns2[16], ns3[16], ns4[16], val[20];
- int err, num;
-
- str = g_strrstr(buf, "_OWANDATA");
- if (str == NULL || strstr(buf, "ERROR") != NULL)
- return;
-
- err = sscanf(str, "_OWANDATA: %d, %[^,], %[^,], "
- "%[^,], %[^,], %[^,], %[^,], %s",
- &num, ip, nm, ns1, ns2, ns3, ns4, val);
-
- if (err != 8) {
- DBG("parsed %d arguments", err);
- return;
- }
-
- DBG("ip %s dns %s %s val %s", ip, ns1, ns2, val);
-
- //connman_resolver_append(data->iface, NULL, ns1);
- //connman_resolver_append(data->iface, NULL, ns2);
-}
-
-static void owancall_callback(const char *buf, void *user_data)
-{
- struct hso_data *data = user_data;
-
- DBG("");
-
- if (g_strrstr(buf, "_OWANCALL: 1, 3") != NULL) {
- DBG("%s", buf);
- //modem_command(modem, owancall_callback, data,
- // "_OWANCALL", "%d,%d,%d", 1, 1, 1);
- }
-
- if (g_strrstr(buf, "_OWANCALL: 1, 1") != NULL) {
- DBG("%s", buf);
- modem_command(data->modem, owandata_callback, data,
- "_OWANDATA", "%d", 1);
- }
-
- if (g_strrstr(buf, "\r\nOK\r\n") != NULL) {
- modem_command(data->modem, owandata_callback, data,
- "_OWANDATA", "%d", 1);
- }
-}
-
-static int network_probe(struct connman_network *network)
-{
- DBG("network %p", network);
-
- return 0;
-}
-
-static void network_remove(struct connman_network *network)
-{
- DBG("network %p", network);
-}
-
-static int network_connect(struct connman_network *network)
-{
- DBG("network %p", network);
-
- return 0;
-}
-
-static int network_disconnect(struct connman_network *network)
-{
- DBG("network %p", network);
-
- return 0;
-}
-
-static struct connman_network_driver network_driver = {
- .name = "hso-network",
- .type = CONNMAN_NETWORK_TYPE_HSO,
- .probe = network_probe,
- .remove = network_remove,
- .connect = network_connect,
- .disconnect = network_disconnect,
};
static int hso_probe(struct connman_device *device)
@@ -138,17 +50,8 @@ static int hso_probe(struct connman_device *device)
data->index = connman_device_get_index(device);
- data->modem = modem_create("/dev/ttyHS0");
- if (data->modem == NULL) {
- g_free(data);
- return -EIO;
- }
-
connman_device_set_data(device, data);
- modem_add_callback(data->modem, "_OWANCALL",
- owancall_callback, data);
-
return 0;
}
@@ -160,53 +63,24 @@ static void hso_remove(struct connman_device *device)
connman_device_set_data(device, NULL);
- modem_destroy(data->modem);
-
g_free(data);
}
static int hso_enable(struct connman_device *device)
{
- struct hso_data *data = connman_device_get_data(device);
- struct connman_network *network;
- int err;
-
DBG("device %p", device);
- err = modem_open(data->modem);
- if (err < 0)
- return err;
-
connman_device_set_powered(device, TRUE);
- modem_command(data->modem, NULL, NULL, "Z", NULL);
- modem_command(data->modem, NULL, NULL, "I", NULL);
-
- modem_command(data->modem, owancall_callback, data,
- "_OWANCALL", "%d,%d,%d", 1, 1, 1);
-
- network = connman_network_create("internet", CONNMAN_NETWORK_TYPE_HSO);
- connman_device_add_network(device, network);
-
return 0;
}
static int hso_disable(struct connman_device *device)
{
- struct hso_data *data = connman_device_get_data(device);
- //const char *iface = connman_device_get_interface(device);
-
DBG("device %p", device);
- //connman_resolver_remove_all(iface);
-
- modem_command(data->modem, owancall_callback, data,
- "_OWANCALL", "%d,%d,%d", 1, 0, 0);
-
connman_device_set_powered(device, FALSE);
- modem_close(data->modem);
-
return 0;
}
@@ -221,25 +95,12 @@ static struct connman_device_driver hso_driver = {
static int hso_init(void)
{
- int err;
-
- err = connman_network_driver_register(&network_driver);
- if (err < 0)
- return err;
-
- err = connman_device_driver_register(&hso_driver);
- if (err < 0) {
- connman_network_driver_unregister(&network_driver);
- return err;
- }
-
- return 0;
+ return connman_device_driver_register(&hso_driver);
}
static void hso_exit(void)
{
connman_device_driver_unregister(&hso_driver);
- connman_network_driver_register(&network_driver);
}
CONNMAN_PLUGIN_DEFINE(hso, "Option HSO device plugin", VERSION,