void encode_cdma_sms(char *pdu, char *to, char *message)
{
    int length;

    LOGE_IF(strlen(message)>160, "Error: Message String too long");
    memset(pdu, '0', 512);
    setbits(pdu,0,16,0);
    setbits(pdu,16,24,0x021002);
    pdu=pdu+10;
    setbits(pdu,0,8,0x04);
    length=encode_number(pdu+4, to);
    setbits(pdu,8,8,length);
    pdu=pdu+length*2+4;
    setbits(pdu,0,24,0x060100);
    pdu=pdu+6;
    setbits(pdu,0,8,0x08);
    length=encode_bearer_data(pdu+4, message);
    LOGE_IF(length>255, "Error: Message Hex too long");
    setbits(pdu,8,8,length);
    pdu=pdu+length*2+4;
    *pdu=0;
}
Exemplo n.º 2
0
Arquivo: sms.c Projeto: checko/sxx-ril
void encode_cdma_sms(char *pdu, char *to, char *message) {
	int i;
	int length;
	
	if(strlen(message)>160) LOGE("Error: Message String too long");
	for(i=0;i<512;i++)
		pdu[i]='0';
	setbits(pdu,0,16,0);
	setbits(pdu,16,24,0x021002);
	pdu=pdu+10;
	setbits(pdu,0,8,0x04);
	length=encode_number(pdu+4, to);
	setbits(pdu,8,8,length);
	pdu=pdu+length*2+4;
	setbits(pdu,0,24,0x060100);
	pdu=pdu+6;
	setbits(pdu,0,8,0x08);
	length=encode_bearer_data(pdu+4, message);
	if(length>255) LOGE("Error: Message Hex too long");
	setbits(pdu,8,8,length);
	pdu=pdu+length*2+4;
	*pdu=0;
}