All of lore.kernel.org
 help / color / mirror / Atom feed
From: Clement Viel <vielclement@gmail.com>
To: ofono@ofono.org
Subject: Re: [PATCH 1/3] sim800: add sim800 support.
Date: Tue, 13 Nov 2018 16:00:09 +0100	[thread overview]
Message-ID: <20181113150009.GA4434@turing> (raw)
In-Reply-To: <CAKSBH7HUTd+dhX2CeCHR8Wqjpam78uVv6y_7SXfSiLYsm-QPeQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 6276 bytes --]

On Tue, Nov 13, 2018 at 12:59:47PM +0100, Giacinto Cifelli wrote:
> Hi Clement,
> 
> On Tue, Nov 13, 2018 at 10:29 AM Clement Viel <vielclement@gmail.com> wrote:
> >
> > ---
> >  plugins/sim900.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++------
> >  1 file changed, 82 insertions(+), 9 deletions(-)
> >
> > diff --git a/plugins/sim900.c b/plugins/sim900.c
> > index a7728cd..bf7b9ec 100644
> > --- a/plugins/sim900.c
> > +++ b/plugins/sim900.c
> > @@ -24,6 +24,7 @@
> >  #endif
> >
> >  #include <errno.h>
> > +#include <string.h>
> >  #include <stdlib.h>
> >  #include <glib.h>
> >  #include <gatchat.h>
> > @@ -60,13 +61,77 @@ static char *dlc_prefixes[NUM_DLC] = { "Voice: ", "Net: ", "SMS: ",
> >
> >  static const char *none_prefix[] = { NULL };
> >
> > +typedef enum type {
> > +       SIM800,
> > +       SIM900,
> > +       SIM_UNKNOWN,
> 
> maybe SIMCOM_UNKNOWN ?

Yes, I do agree, updating patchset.

> 
> > +} type_t;
> > +
> >  struct sim900_data {
> >         GIOChannel *device;
> >         GAtMux *mux;
> >         GAtChat * dlcs[NUM_DLC];
> >         guint frame_size;
> > +       type_t modem_type;
> >  };
> >
> > +static void set_modem_type (const char *type, struct ofono_modem *modem)
> > +{
> > +       struct sim900_data *data = ofono_modem_get_data(modem);
> > +
> > +       if (strcmp(type, "sim800") == 0)
> > +               data->modem_type = SIM800;
> > +       else if (strcmp(type, "sim900") == 0)
> > +               data->modem_type = SIM900;
> > +       else
> > +               data->modem_type = SIM_UNKNOWN;
> > +       DBG("modem type is %d",data->modem_type);
> > +}
> > +
> > +static void mux_ready_notify(GAtResult *result, gpointer user_data)
> > +{
> > +       struct ofono_modem *modem = user_data;
> > +       struct sim900_data *data = ofono_modem_get_data(modem);
> > +       struct ofono_gprs *gprs = NULL;
> > +       struct ofono_gprs_context *gc;
> > +
> > +       ofono_sms_create(modem, OFONO_VENDOR_SIMCOM, "atmodem",
> > +                                       data->dlcs[SMS_DLC]);
> > +
> > +       gprs = ofono_gprs_create(modem, 0, "atmodem", data->dlcs[GPRS_DLC]);
> > +       if (gprs == NULL)
> > +               return;
> > +
> > +       gc = ofono_gprs_context_create(modem, OFONO_VENDOR_SIMCOM,
> > +                                                                       "atmodem", data->dlcs[GPRS_DLC]);
> > +       if (gc)
> > +               ofono_gprs_add_context(gprs, gc);
> > +
> > +
> > +}
> > +
> > +static void check_model(gboolean ok, GAtResult *result, gpointer user_data)
> > +{
> > +       struct ofono_modem *modem = user_data;
> > +       GAtResultIter iter;
> > +       char const *model;
> > +
> > +       DBG("");
> > +
> > +       g_at_result_iter_init(&iter, result);
> > +
> > +       while (g_at_result_iter_next(&iter, NULL)) {
> > +               if (!g_at_result_iter_next_unquoted_string(&iter, &model))
> > +                       continue;
> > +
> > +               DBG("setting type %s", model);
> > +               if (strstr(model, "SIM800"))
> > +                       set_modem_type("sim800", modem);
> > +               else if (strstr(model, "SIM900"))
> > +                       set_modem_type("sim900", modem);
> > +       }
> > +}
> > +
> >  static int sim900_probe(struct ofono_modem *modem)
> >  {
> >         struct sim900_data *data;
> > @@ -78,7 +143,6 @@ static int sim900_probe(struct ofono_modem *modem)
> >                 return -ENOMEM;
> >
> >         ofono_modem_set_data(modem, data);
> > -
> >         return 0;
> >  }
> >
> > @@ -111,6 +175,7 @@ static GAtChat *open_device(struct ofono_modem *modem,
> >         GHashTable *options;
> >
> >         device = ofono_modem_get_string(modem, key);
> > +
> >         if (device == NULL)
> >                 return NULL;
> >
> > @@ -232,6 +297,11 @@ static void setup_internal_mux(struct ofono_modem *modem)
> >                         goto error;
> >                 }
> >         }
> > +       if (data->modem_type == SIM800) {
> > +               for (i = 0; i<NUM_DLC; i++) {
> > +                       g_at_chat_register(data->dlcs[i], "SMS Ready", mux_ready_notify, FALSE, modem, NULL);
> > +               }
> > +       }
> >
> >         ofono_modem_set_powered(modem, TRUE);
> >
> > @@ -294,6 +364,7 @@ static int sim900_enable(struct ofono_modem *modem)
> >                 return -EINVAL;
> >
> >         g_at_chat_send(data->dlcs[SETUP_DLC], "ATE0", NULL, NULL, NULL, NULL);
> > +       g_at_chat_send(data->dlcs[SETUP_DLC], "AT+CGMM", NULL,check_model, modem, NULL);
> >
> >         /* For obtain correct sms service number */
> >         g_at_chat_send(data->dlcs[SETUP_DLC], "AT+CSCS=\"GSM\"", NULL,
> > @@ -353,18 +424,20 @@ static void sim900_post_sim(struct ofono_modem *modem)
> >
> >         DBG("%p", modem);
> >
> > -       ofono_phonebook_create(modem, 0, "atmodem", data->dlcs[VOICE_DLC]);
> > -       ofono_sms_create(modem, OFONO_VENDOR_SIMCOM, "atmodem",
> > +       if (data->modem_type != SIM800) {
> > +               ofono_phonebook_create(modem, 0, "atmodem", data->dlcs[VOICE_DLC]);
> > +               ofono_sms_create(modem, OFONO_VENDOR_SIMCOM, "atmodem",
> >                                                 data->dlcs[SMS_DLC]);
> >
> > -       gprs = ofono_gprs_create(modem, 0, "atmodem", data->dlcs[GPRS_DLC]);
> > -       if (gprs == NULL)
> > -               return;
> > +               gprs = ofono_gprs_create(modem, 0, "atmodem", data->dlcs[GPRS_DLC]);
> > +               if (gprs == NULL)
> > +                       return;
> >
> > -       gc = ofono_gprs_context_create(modem, OFONO_VENDOR_SIMCOM_SIM900,
> > +               gc = ofono_gprs_context_create(modem, OFONO_VENDOR_SIMCOM_SIM900,
> >                                         "atmodem", data->dlcs[GPRS_DLC]);
> > -       if (gc)
> > -               ofono_gprs_add_context(gprs, gc);
> > +               if (gc)
> > +                       ofono_gprs_add_context(gprs, gc);
> > +       }
> >  }
> >
> >  static void sim900_post_online(struct ofono_modem *modem)
> > --
> 
> Regards,
> Giacinto

Regards
Clement

  reply	other threads:[~2018-11-13 15:00 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-13  9:29 [PATCH 1/3] sim800: add sim800 support Clement Viel
2018-11-13 11:59 ` Giacinto Cifelli
2018-11-13 15:00   ` Clement Viel [this message]
2018-11-13 15:04     ` Marcel Holtmann
2018-11-13 15:11 ` Jonas Bonn
2018-11-13 15:28   ` Clement Viel
  -- strict thread matches above, loose matches on Subject: below --
2018-11-13 15:33 Clement Viel
2018-11-13 16:53 ` Jonas Bonn
2018-11-13 17:11   ` Clement Viel
2018-11-13 17:19 Clement Viel
2018-11-14 20:34 ` Denis Kenzior

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181113150009.GA4434@turing \
    --to=vielclement@gmail.com \
    --cc=ofono@ofono.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.