From: Denis Kenzior <denkenz@gmail.com>
To: ofono@ofono.org
Subject: Re: [PATCH 1/3] sim800: add support for sim800 modem.
Date: Thu, 01 Nov 2018 09:53:58 -0500 [thread overview]
Message-ID: <412dac97-dea0-efa5-eda2-e79aa569b99e@gmail.com> (raw)
In-Reply-To: <1539624449-12221-1-git-send-email-vielclement@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 5259 bytes --]
Hi Clement,
On 10/15/2018 12:27 PM, Clement Viel wrote:
> ---
> 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;
> +
You can't really rely on the modem path for this. Either query the
model directly or set the type based on the driver selected.
And no empty lines at the end of the function please
> +}
> +
> +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);
> + }
> +
The indentation and stule is all wrong here.
> +}
> +
> 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);
> +
This change is spurious and should not be part of this commit
> 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);
> + }
> + }
Why do you want this notification on all ports? Isn't one enough?
>
> 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);
> + }
Som SIM800 doesn't get any of these atoms?
> }
>
> 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;
This doesn't really work this way. The init function should either
register all drivers successfully or fail.
> }
>
> static void sim900_exit(void)
>
Regards,
-Denis
next prev parent reply other threads:[~2018-11-01 14:53 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-15 17:27 [PATCH 1/3] sim800: add support for sim800 modem Clement Viel
2018-10-15 17:27 ` [PATCH 2/3] sim800: add documentation and modify AUTHORS file Clement Viel
2018-11-01 14:48 ` Denis Kenzior
2018-11-02 23:36 ` Clement Viel
2018-10-15 17:27 ` [PATCH 3/3] sim800: add udev detection Clement Viel
2018-10-31 15:16 ` [PATCH 1/3] sim800: add support for sim800 modem =?unknown-8bit?q?Cl=C3=A9ment?= VIEL
2018-11-01 14:53 ` Denis Kenzior [this message]
2018-11-02 23:31 ` Clement Viel
-- strict thread matches above, loose matches on Subject: below --
2018-11-07 10:14 Clement Viel
2018-11-07 13:47 ` Jonas Bonn
2018-10-03 13:28 Clement Viel
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=412dac97-dea0-efa5-eda2-e79aa569b99e@gmail.com \
--to=denkenz@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.