コード例 #1
0
ファイル: test-sms.c プロジェクト: impegoraro/ofono
static void dump_details(struct sms *sms)
{
	if (sms->sc_addr.address[0] == '\0')
		g_print("SMSC Address absent, default will be used\n");
	else
		g_print("SMSC Address number_type: %d, number_plan: %d, %s\n",
			(int)sms->sc_addr.number_type,
			(int)sms->sc_addr.numbering_plan, sms->sc_addr.address);

	switch (sms->type) {
	case SMS_TYPE_DELIVER:
		g_print("Type: Deliver\n");

		g_print("Originator-Address: %d, %d, %s\n",
			(int)sms->deliver.oaddr.number_type,
			(int)sms->deliver.oaddr.numbering_plan,
			sms->deliver.oaddr.address);

		g_print("PID: %d\n", (int)sms->deliver.pid);
		g_print("DCS: %d\n", (int)sms->deliver.dcs);

		print_scts(&sms->deliver.scts, "Timestamp");

		break;
	case SMS_TYPE_SUBMIT:
		g_print("Type: Submit\n");

		g_print("Message Reference: %u\n", (int)sms->submit.mr);

		g_print("Destination-Address: %d, %d, %s\n",
			(int)sms->submit.daddr.number_type,
			(int)sms->submit.daddr.numbering_plan,
			sms->submit.daddr.address);

		g_print("PID: %d\n", (int)sms->submit.pid);
		g_print("DCS: %d\n", (int)sms->submit.dcs);

		print_vpf(sms->submit.vpf, &sms->submit.vp);

		break;
	case SMS_TYPE_STATUS_REPORT:
		break;
	case SMS_TYPE_COMMAND:
	case SMS_TYPE_DELIVER_REPORT_ACK:
	case SMS_TYPE_DELIVER_REPORT_ERROR:
	case SMS_TYPE_SUBMIT_REPORT_ACK:
	case SMS_TYPE_SUBMIT_REPORT_ERROR:
		break;
	}
}
コード例 #2
0
static void print_vpf(enum sms_validity_period_format vpf,
			struct sms_validity_period *vp)
{
	g_print("Validity Period Format: %d\n", (int)vpf);

	switch (vpf) {
	case SMS_VALIDITY_PERIOD_FORMAT_ABSENT:
		g_print("Validity-Period: Absent\n");
		break;
	case SMS_VALIDITY_PERIOD_FORMAT_RELATIVE:
		g_print("Validity-Period: %d\n",
			(int)vp->relative);
		break;
	case SMS_VALIDITY_PERIOD_FORMAT_ABSOLUTE:
		print_scts(&vp->absolute, "Validity-Period:");
		break;
	case SMS_VALIDITY_PERIOD_FORMAT_ENHANCED:
		g_print("Validity-Period: Enhanced");
		break;
	}
}
コード例 #3
0
static void test_simple_deliver()
{
	struct sms sms;
	unsigned char *decoded_pdu;
	long pdu_len;
	gboolean ret;
	int data_len;
	unsigned char *unpacked;
	char *utf8;

	decoded_pdu = decode_hex(simple_deliver, -1, &pdu_len, 0);

	g_assert(decoded_pdu);
	g_assert(pdu_len == (long)strlen(simple_deliver) / 2);

	ret = sms_decode(decoded_pdu, pdu_len, FALSE, 30, &sms);

	g_free(decoded_pdu);

	g_assert(ret);
	g_assert(sms.type == SMS_TYPE_DELIVER);

	if (g_test_verbose()) {
		g_print("SMSC Address number_type: %d, number_plan: %d, %s\n",
			(int)sms.sc_addr.number_type,
			(int)sms.sc_addr.numbering_plan, sms.sc_addr.address);

		g_print("SMS type: %d\n", (int)sms.type);

		g_print("Originator-Address: %d, %d, %s\n",
			(int)sms.deliver.oaddr.number_type,
			(int)sms.deliver.oaddr.numbering_plan,
			sms.deliver.oaddr.address);

		g_print("PID: %d\n", (int)sms.deliver.pid);
		g_print("DCS: %d\n", (int)sms.deliver.dcs);

		print_scts(&sms.deliver.scts, "Timezone");
	}

	g_assert(sms.sc_addr.number_type == SMS_NUMBER_TYPE_INTERNATIONAL);
	g_assert(sms.sc_addr.numbering_plan == SMS_NUMBERING_PLAN_ISDN);
	g_assert(strcmp(sms.sc_addr.address, "31624000000") == 0);

	g_assert(sms.deliver.oaddr.number_type ==
			SMS_NUMBER_TYPE_INTERNATIONAL);
	g_assert(sms.deliver.oaddr.numbering_plan ==
			SMS_NUMBERING_PLAN_ISDN);
	g_assert(strcmp(sms.deliver.oaddr.address, "31641600986") == 0);

	g_assert(sms.deliver.pid == 0);
	g_assert(sms.deliver.dcs == 0);

	g_assert(sms.deliver.scts.year == 2);
	g_assert(sms.deliver.scts.month == 8);
	g_assert(sms.deliver.scts.day == 26);
	g_assert(sms.deliver.scts.hour == 19);
	g_assert(sms.deliver.scts.minute == 37);
	g_assert(sms.deliver.scts.second == 41);
	g_assert(sms.deliver.scts.timezone == -4);

	g_assert(sms.deliver.udl == 12);

	data_len = sms_udl_in_bytes(sms.deliver.udl, sms.deliver.dcs);

	g_assert(data_len == 11);

	unpacked = unpack_7bit(sms.deliver.ud, data_len, 0, FALSE,
				sms.deliver.udl, NULL, 0xff);

	g_assert(unpacked);

	utf8 = convert_gsm_to_utf8(unpacked, -1, NULL, NULL, 0xff);

	g_free(unpacked);

	g_assert(utf8);

	if (g_test_verbose())
		g_print("Decoded user data is: %s\n", utf8);

	g_assert(strcmp(utf8, "How are you?") == 0);

	g_free(utf8);
}