Hi,

On 13/10/18 07:48, Giacinto Cifelli wrote:
The ofono_lte_default_attach_info now handles also the protocol and the
authentication method, username and password.

Co-authored-by: Martin Baschin <[email protected]>
---
  drivers/atmodem/lte.c | 133 ++++++++++++++++++++++++++++++++++++++----
  1 file changed, 123 insertions(+), 10 deletions(-)

diff --git a/drivers/atmodem/lte.c b/drivers/atmodem/lte.c
index efa4e5fe..72e0a6ef 100644
--- a/drivers/atmodem/lte.c
+++ b/drivers/atmodem/lte.c
@@ -3,6 +3,7 @@
   *  oFono - Open Source Telephony
   *
   *  Copyright (C) 2017  Intel Corporation. All rights reserved.
+ *  Copyright (C) 2018 Gemalto M2M
   *
   *  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
@@ -45,10 +46,57 @@ struct lte_driver_data {
        GAtChat *chat;
  };
-static void at_lte_set_default_attach_info_cb(gboolean ok, GAtResult *result,
+struct lte_cbd {
+       gint ref_count; /* Ref count */
+       ofono_lte_cb_t cb;
+       void *data;
+       GAtChat *chat;
+       const struct ofono_lte_default_attach_info *info;
+};
+
+static struct lte_cbd *lte_cb_data_new0(void *cb, void *data,
+               GAtChat *chat, const struct ofono_lte_default_attach_info *info)
+{
+       struct lte_cbd *cbd = g_new0(struct lte_cbd, 1);
+
+       cbd->ref_count = 1;
+       cbd->cb = cb;
+       cbd->data = data;
+       cbd->chat = chat;
+       cbd->info = info;
+
+       return cbd;
+}
+
+static inline struct lte_cbd *lte_cb_data_ref(struct lte_cbd *cbd)
+{
+       if (cbd == NULL)
+               return NULL;
+
+       g_atomic_int_inc(&cbd->ref_count);
+
+       return cbd;
+}
+
+static void lte_cb_data_unref(gpointer user_data)
+{
+       gboolean is_zero;
+       struct lte_cbd *cbd = user_data;
+
+       if (cbd == NULL)
+               return;
+
+       is_zero = g_atomic_int_dec_and_test(&cbd->ref_count);
+
+       if (is_zero == TRUE)
+               g_free(cbd);
+}
+

The above isn't wrong, but I question the need for the atomic constructs.  ofono isn't a thread-safe library.

I see that there other uses of atomic accessors in the codebase, but I believe these are remnants of a past approach with other ambitions... Denis will set me right if I'm wrong about this because this mostly predates my involvement with ofono. :)

/Jonas

_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to