Code cleanup
This commit is contained in:
parent
da33ae2d69
commit
d6f6231b65
32
src/modem.c
32
src/modem.c
@ -595,19 +595,17 @@ static int _message_to_pdu(unsigned long quirks, char const * number,
|
|||||||
GSMModemAlphabet alphabet, char const * text, size_t length,
|
GSMModemAlphabet alphabet, char const * text, size_t length,
|
||||||
char ** cmd, char ** pdu)
|
char ** cmd, char ** pdu)
|
||||||
{
|
{
|
||||||
char * buf1;
|
unsigned long cmdlen;
|
||||||
unsigned long len1;
|
|
||||||
char const cmd1[] = "AT+CMGS=";
|
char const cmd1[] = "AT+CMGS=";
|
||||||
char const cmd2[] = "1100";
|
char const cmd2[] = "1100";
|
||||||
char * buf2;
|
unsigned long pdulen;
|
||||||
unsigned long len2;
|
|
||||||
char * addr;
|
char * addr;
|
||||||
char * data = NULL;
|
char * data = NULL;
|
||||||
char const pid[] = "00";
|
char const pid[] = "00";
|
||||||
char dcs[] = "0X";
|
char dcs[] = "0X";
|
||||||
char const vp[] = "AA";
|
char const vp[] = "AA";
|
||||||
|
|
||||||
if(!_is_number(number) || text == NULL)
|
if(!_is_number(number) || text == NULL || cmd == NULL || pdu == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
switch(alphabet)
|
switch(alphabet)
|
||||||
{
|
{
|
||||||
@ -621,33 +619,31 @@ static int _message_to_pdu(unsigned long quirks, char const * number,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
addr = _number_to_address(number);
|
addr = _number_to_address(number);
|
||||||
len2 = 2 + sizeof(cmd2) + 2 + strlen(addr ? addr : "") + sizeof(pid)
|
cmdlen = sizeof(cmd1) + 4;
|
||||||
|
*cmd = malloc(cmdlen);
|
||||||
|
pdulen = 2 + sizeof(cmd2) + 2 + strlen(addr ? addr : "") + sizeof(pid)
|
||||||
+ sizeof(dcs) + sizeof(vp) + 2 + strlen(data ? data : "") + 1;
|
+ sizeof(dcs) + sizeof(vp) + 2 + strlen(data ? data : "") + 1;
|
||||||
buf2 = malloc(len2);
|
*pdu = malloc(pdulen);
|
||||||
len1 = sizeof(cmd1) + 4;
|
if(addr == NULL || data == NULL || *cmd == NULL || *pdu == NULL)
|
||||||
buf1 = malloc(len1);
|
|
||||||
if(addr == NULL || data == NULL || buf1 == NULL || buf2 == NULL)
|
|
||||||
{
|
{
|
||||||
free(addr);
|
free(addr);
|
||||||
free(data);
|
free(data);
|
||||||
free(buf1);
|
free(*cmd);
|
||||||
free(buf2);
|
free(*pdu);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if(number[0] == '+')
|
if(number[0] == '+')
|
||||||
number++;
|
number++;
|
||||||
snprintf(buf2, len2, "%s%s%02lX%s%s%s%s%02lX%s\x1a", quirks
|
snprintf(*pdu, pdulen, "%s%s%02lX%s%s%s%s%02lX%s\x1a", quirks
|
||||||
& GSM_MODEM_QUIRK_WANT_SMSC_IN_PDU ? "00" : "",
|
& GSM_MODEM_QUIRK_WANT_SMSC_IN_PDU ? "00" : "",
|
||||||
cmd2, (unsigned long)strlen(number),
|
cmd2, (unsigned long)strlen(number),
|
||||||
addr, pid, dcs, vp, (unsigned long)length, data);
|
addr, pid, dcs, vp, (unsigned long)length, data);
|
||||||
len2 = strlen(buf2); /* XXX obtain it from snprintf() */
|
pdulen = strlen(*pdu); /* XXX obtain it from snprintf() */
|
||||||
if(quirks & GSM_MODEM_QUIRK_WANT_SMSC_IN_PDU)
|
if(quirks & GSM_MODEM_QUIRK_WANT_SMSC_IN_PDU)
|
||||||
len2 -= 2;
|
pdulen -= 2;
|
||||||
snprintf(buf1, len1, "%s%lu", cmd1, (len2 - 1) / 2);
|
snprintf(*cmd, cmdlen, "%s%lu", cmd1, (pdulen - 1) / 2);
|
||||||
free(addr);
|
free(addr);
|
||||||
free(data);
|
free(data);
|
||||||
*cmd = buf1;
|
|
||||||
*pdu = buf2;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user