Report incoming messages (enabled unsollicited mode)
This commit is contained in:
parent
90c6e5c1d3
commit
0d138dcc3b
@ -480,6 +480,15 @@ int gsm_set_line_presentation(GSM * gsm, int set)
|
||||
}
|
||||
|
||||
|
||||
/* gsm_set_message_indications */
|
||||
int gsm_set_message_indications(GSM * gsm, GSMMessageMode mode,
|
||||
int unsollicited)
|
||||
{
|
||||
return gsm_modem_set_message_indications(gsm->modem, mode,
|
||||
(unsollicited != 0) ? TRUE : FALSE);
|
||||
}
|
||||
|
||||
|
||||
/* gsm_set_mute */
|
||||
int gsm_set_mute(GSM * gsm, int mute)
|
||||
{
|
||||
|
10
src/gsm.h
10
src/gsm.h
@ -114,6 +114,14 @@ typedef enum _GSMMessageList
|
||||
GSM_MESSAGE_LIST_ALL = 4
|
||||
} GSMMessageList;
|
||||
|
||||
typedef enum _GSMMessageMode
|
||||
{
|
||||
GSM_MESSAGE_MODE_BUFFER_REPLACE = 0,
|
||||
GSM_MESSAGE_MODE_DISCARD_REJECT = 1,
|
||||
GSM_MESSAGE_MODE_BUFFER_FLUSH = 2,
|
||||
GSM_MESSAGE_MODE_FORWARD = 3
|
||||
} GSMMessageMode;
|
||||
|
||||
typedef enum _GSMMode
|
||||
{
|
||||
GSM_MODE_INIT = 0, GSM_MODE_COMMAND, GSM_MODE_PDU
|
||||
@ -336,6 +344,8 @@ int gsm_set_call_waiting_control(GSM * gsm, int unsollicited);
|
||||
int gsm_set_extended_ring_reports(GSM * gsm, int extended);
|
||||
int gsm_set_functional(GSM * gsm, int functional);
|
||||
int gsm_set_line_presentation(GSM * gsm, int set);
|
||||
int gsm_set_message_indications(GSM * gsm, GSMMessageMode mode,
|
||||
int unsollicited);
|
||||
int gsm_set_mute(GSM * gsm, int mute);
|
||||
int gsm_set_operator_format(GSM * gsm, GSMOperatorFormat format);
|
||||
int gsm_set_operator_mode(GSM * gsm, GSMOperatorMode mode);
|
||||
|
24
src/modem.c
24
src/modem.c
@ -500,7 +500,7 @@ int gsm_modem_send_message(GSMModem * gsmm, char const * number,
|
||||
& GSM_MODEM_QUIRK_WANT_SMSC_IN_PDU ? "00" : "",
|
||||
cmd2, strlen(number),
|
||||
addr, pid, dcs, vp, length, data);
|
||||
len2 = strlen(buf2);
|
||||
len2 = strlen(buf2); /* XXX obtain it from snprintf() */
|
||||
if(gsmm->quirks & GSM_MODEM_QUIRK_WANT_SMSC_IN_PDU)
|
||||
len2 -= 2;
|
||||
snprintf(buf1, len1, "%s%lu", cmd1, (len2 - 1) / 2);
|
||||
@ -720,6 +720,28 @@ int gsm_modem_set_message_format(GSMModem * gsmm, GSMMessageFormat format)
|
||||
}
|
||||
|
||||
|
||||
/* gsm_modem_set_message_indications */
|
||||
int gsm_modem_set_message_indications(GSMModem * gsmm, GSMMessageMode mode,
|
||||
gboolean unsollicited)
|
||||
{
|
||||
char cmd[] = "AT+CNMI=X,X";
|
||||
|
||||
switch(mode)
|
||||
{
|
||||
case GSM_MESSAGE_MODE_BUFFER_REPLACE:
|
||||
case GSM_MESSAGE_MODE_DISCARD_REJECT:
|
||||
case GSM_MESSAGE_MODE_BUFFER_FLUSH:
|
||||
case GSM_MESSAGE_MODE_FORWARD:
|
||||
break;
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
cmd[8] = mode + '0';
|
||||
cmd[10] = unsollicited ? '1' : '0';
|
||||
return (gsm_queue(gsmm->gsm, cmd) != NULL) ? 0 : 1;
|
||||
}
|
||||
|
||||
|
||||
/* gsm_modem_set_mute */
|
||||
static void _modem_set_mute_callback(GSM * gsm);
|
||||
|
||||
|
@ -91,6 +91,8 @@ int gsm_modem_set_extended_ring_reports(GSMModem * gsmm, gboolean extended);
|
||||
int gsm_modem_set_line_presentation(GSMModem * gsmm, gboolean set);
|
||||
int gsm_modem_set_functional(GSMModem * gsmm, gboolean functional);
|
||||
int gsm_modem_set_message_format(GSMModem * gsmm, GSMMessageFormat format);
|
||||
int gsm_modem_set_message_indications(GSMModem * gsmm, GSMMessageMode mode,
|
||||
gboolean unsollicited);
|
||||
int gsm_modem_set_mute(GSMModem * gsmm, gboolean mute);
|
||||
int gsm_modem_set_operator_format(GSMModem * gsmm, GSMOperatorFormat format);
|
||||
int gsm_modem_set_operator_mode(GSMModem * gsmm, GSMOperatorMode mode);
|
||||
|
@ -2348,6 +2348,8 @@ static int _phone_gsm_event(GSMEvent * event, gpointer data)
|
||||
}
|
||||
gsm_set_call_presentation(phone->gsm, TRUE);
|
||||
gsm_set_extended_ring_reports(phone->gsm, TRUE);
|
||||
gsm_set_message_indications(phone->gsm,
|
||||
GSM_MESSAGE_MODE_BUFFER_FLUSH, TRUE);
|
||||
gsm_set_operator_mode(phone->gsm,
|
||||
GSM_OPERATOR_MODE_AUTOMATIC);
|
||||
gsm_set_registration_report(phone->gsm, report);
|
||||
|
Loading…
Reference in New Issue
Block a user