diff options
Diffstat (limited to 'src/libgsmd')
| -rw-r--r-- | src/libgsmd/libgsmd_network.c | 34 | 
1 files changed, 34 insertions, 0 deletions
| diff --git a/src/libgsmd/libgsmd_network.c b/src/libgsmd/libgsmd_network.c index 333debd..5551de3 100644 --- a/src/libgsmd/libgsmd_network.c +++ b/src/libgsmd/libgsmd_network.c @@ -26,6 +26,7 @@  #include <libgsmd/libgsmd.h>  #include <libgsmd/misc.h> +#include <libgsmd/sms.h>  #include <gsmd/usock.h>  #include <gsmd/event.h> @@ -133,3 +134,36 @@ int lgsm_get_subscriber_num(struct lgsm_handle *lh)  {  	return lgsm_send_simple(lh, GSMD_MSG_NETWORK, GSMD_NETWORK_GET_NUMBER);  } + +int lgsm_voicemail_set(struct lgsm_handle *lh, const char *number) +{ +	struct gsmd_msg_hdr *gmh; +	struct gsmd_voicemail *vmail; +	int rc; + +	gmh = lgsm_gmh_fill(GSMD_MSG_NETWORK, +			GSMD_NETWORK_VMAIL_SET, sizeof(*vmail)); +	if (!gmh) +		return -ENOMEM; + +	vmail = (struct gsmd_voicemail *) gmh->data; +	vmail->enable = 1; +	if (lgsm_number2addr(&vmail->addr, number, 0)){ +		lgsm_gmh_free(gmh); +		return -EINVAL; +	} + +	if (lgsm_send(lh, gmh) < gmh->len + sizeof(*gmh)) { +		lgsm_gmh_free(gmh); +		return -EIO; +	} + +	lgsm_gmh_free(gmh); +	return 0; +} + +/* Get currently configured voice mail number */ +int lgsm_voicemail_get(struct lgsm_handle *lh) +{ +	return lgsm_send_simple(lh, GSMD_MSG_NETWORK, GSMD_NETWORK_VMAIL_GET); +} | 
