view uptools/atcmd/smsend_pduout.c @ 378:e61525f082bd

uptools/atcmd/smsend_pduout.c: added UCS-2 function, some refactoring
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 09 Mar 2018 00:17:13 +0000
parents d1fa771abeb8
children a38805b5b6d4
line wrap: on
line source

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

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

extern void cmgw_callback();

extern int sms_write_mode;

prep_for_pdu_mode()
{
	atinterf_exec_cmd_needok("AT+CMGF=0", 0, 0);
}

send_pdu_out(pduhex, pdulen)
	char *pduhex;
	unsigned pdulen;
{
	char *cmdname;
	void (*callback)();
	char send_cmd[32];

	if (sms_write_mode) {
		cmdname = "CMGW";
		callback = cmgw_callback;
	} else {
		cmdname = "CMGS";
		callback = 0;
	}
	sprintf(send_cmd, "AT+%s=%u", cmdname, pdulen);
	atinterf_exec_cmd_needok(send_cmd, pduhex, callback);
}

send_in_pdu_mode(da, textsrc, textlen, udh, udhl)
	u_char *da, *textsrc, *udh;
	unsigned textlen, udhl;
{
	u_char pdu[158];
	unsigned pdulen;
	char pduhex[317];

	pdu[0] = 0;
	pdulen = make_sms_submit_pdu(da, 0, 0, textsrc, textlen, udh, udhl,
					pdu + 1);
	make_hex_string(pdu, pdulen + 1, pduhex);
	send_pdu_out(pduhex, pdulen);
}

send_pdu_ucs2(da, textsrc, textlen, udh, udhl)
	u_char *da, *udh;
	u_short *textsrc;
	unsigned textlen, udhl;
{
	u_char ucs2_be[140], pdu[158];
	unsigned pdulen;
	char pduhex[317];

	ucs2_out_bigend(textsrc, ucs2_be, textlen);
	pdu[0] = 0;
	pdulen = make_sms_submit_pdu_8bit(da, 0, 0x08, ucs2_be, textlen * 2,
					  udh, udhl, pdu + 1);
	make_hex_string(pdu, pdulen + 1, pduhex);
	send_pdu_out(pduhex, pdulen);
}