view uptools/atcmd/smsend_text.c @ 405:ed9b67e7e741

fcup-smsend: fixed bug in the handling of -W with no dest address argument The original code checked for argv[optind+1] when argv[optind] is NULL; on most systems this bogus code gets the first line of the environment, which is clearly not what we are after. Fixed the code to check argc instead.
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 11 Aug 2018 18:59:54 +0000
parents 89fe66cb60f6
children dc2fd8e6f42c
line wrap: on
line source

/*
 * This module implements SMS sending/writing in text mode.
 */

#include <sys/types.h>
#include <stdio.h>

extern void cmgw_callback();

extern int sms_write_mode;

prep_for_text_mode()
{
	atinterf_exec_cmd_needok("AT+CMGF=1", 0, 0);
	atinterf_exec_cmd_needok("AT+CSCS=\"8859-1\"", 0, 0);
	atinterf_exec_cmd_needok("AT+CSMP=1,,0,0", 0, 0);
}

send_in_text_mode(binda, textstr)
	u_char *binda;
	char *textstr;
{
	char *cmdname;
	void (*callback)();
	char send_cmd[64], digits[21];

	if (sms_write_mode) {
		cmdname = "CMGW";
		callback = cmgw_callback;
	} else {
		cmdname = "CMGS";
		callback = 0;
	}
	if (binda[0]) {
		decode_address_digits(binda + 2, digits, binda[0]);
		sprintf(send_cmd, "AT+%s=\"%s\",%u", cmdname, digits, binda[1]);
	} else
		sprintf(send_cmd, "AT+%s", cmdname);
	atinterf_exec_cmd_needok(send_cmd, textstr, callback);
}