Hi all,

I sent these patches 2 weeks ago and did not receive any feedback.
It's not urgent at all, I was just wandering whether they'll be
reviewed so I can move on :-)

Regards

Le lun. 15 oct. 2018 à 19:27, Clement Viel <[email protected]> a écrit :
>
> ---
>  plugins/sim900.c | 89 
> ++++++++++++++++++++++++++++++++++++++++++++++++++------
>  1 file changed, 80 insertions(+), 9 deletions(-)
>
> diff --git a/plugins/sim900.c b/plugins/sim900.c
> index a7728cd..9f3f334 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,59 @@ static char *dlc_prefixes[NUM_DLC] = { "Voice: ", "Net: 
> ", "SMS: ",
>
>  static const char *none_prefix[] = { NULL };
>
> +typedef enum type {
> +       SIM800,
> +       SIM900,
> +       SIM_UNKNOWN,
> +} 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 (struct ofono_modem *modem)
> +{
> +       struct sim900_data *data = ofono_modem_get_data(modem);
> +       const char *path = ofono_modem_get_path(modem);
> +
> +       if (strstr(path, "sim800"))
> +               data->modem_type = SIM800;
> +       else if (strstr(path, "sim900"))
> +               data->modem_type = SIM900;
> +       else
> +               data->modem_type = SIM_UNKNOWN;
> +
> +}
> +
> +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;
> +       static int notified = 0;
> +
> +       if (!notified) {
> +       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 int sim900_probe(struct ofono_modem *modem)
>  {
>         struct sim900_data *data;
> @@ -79,6 +126,7 @@ static int sim900_probe(struct ofono_modem *modem)
>
>         ofono_modem_set_data(modem, data);
>
> +       set_modem_type(modem);
>         return 0;
>  }
>
> @@ -111,6 +159,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 +281,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);
>
> @@ -353,18 +407,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)
> @@ -391,9 +447,24 @@ static struct ofono_modem_driver sim900_driver = {
>         .post_online    = sim900_post_online,
>  };
>
> +
> +static struct ofono_modem_driver sim800_driver = {
> +       .name           = "sim800",
> +       .probe          = sim900_probe,
> +       .remove         = sim900_remove,
> +       .enable         = sim900_enable,
> +       .disable        = sim900_disable,
> +       .pre_sim        = sim900_pre_sim,
> +       .post_sim       = sim900_post_sim,
> +       .post_online    = sim900_post_online,
> +};
> +
>  static int sim900_init(void)
>  {
> -       return ofono_modem_driver_register(&sim900_driver);
> +       int ret = 0;
> +       ret = ofono_modem_driver_register(&sim800_driver);
> +       ret += ofono_modem_driver_register(&sim900_driver);
> +       return ret;
>  }
>
>  static void sim900_exit(void)
> --
> 2.7.4
>


-- 
----
Clement Viel
Tel : +33688431961
-----
_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to