Motorola Droid 4 SMS sending
Hi!
Motorola Droid 4 runs packet protocol over serial... and its kernel driver requires explicit "write()" boundaries at places where packet boundaries should be.
So I can send SMS using low level g_at... functions (that are not normally accessible), but not using g_at_chat_send().
If anyone has good idea for clean (or clean enough) solution, let me know.
Best regards,
Pavel
snprintf(buf, sizeof(buf), "AT+GCMGS=\r"); encode_hex_own_buf(pdu, pdu_len, 0, buf_pdu);
#if WANT_IT_BROKEN
strcat(buf, buf_pdu+2);
g_at_chat_send(data->send_chat, buf, none_prefix, NULL, data, NULL);
#else
g_at_io_write(data->send_chat->parent->io, buf, strlen(buf));
g_at_io_write(data->send_chat->parent->io, buf_pdu, strlen(buf_pdu));
g_io_channel_flush(data->send_chat->parent->io->channel, NULL);#endif
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Hi Pavel,
Quoted 9 lines · Pavel Machek
Hi!
Motorola Droid 4 runs packet protocol over serial... and its kernel driver requires explicit "
write()" boundaries at places where packet boundaries should be.So I can send SMS using low level
g_at... functions (that are not normally accessible), but not usingg_at_chat_send().
Quoted 9 lines
If anyone has good idea for clean (or clean enough) solution, let me know.
Best regards,
Pavel snprintf(buf, sizeof(buf), "AT+GCMGS=\r"); encode_hex_own_buf(pdu, pdu_len, 0, buf_pdu);
So speaking from memory, but 27.005 expects CMGS to be a two part command. First you send AT+CMGS=<whatever> and the modem then prompts for the PDU using '>'. Then we provide the PDU followed by Ctrl-Z. If the Motorola modem doesn't do this, then you're stuck providing a full Motorola-Hacked-AT-Commands implementation of your own.
You can try hacking GAtChat to add a bunch of behavior-modifications like this, but I imagine that this protocol is different enough where such changes become a nightmare to keep track of.
Regards,
-Denis