view simtool/lndwrite.c @ 128:01aed8d0685a

doc/Low-level-commands: raw apdu command documented
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 20 Feb 2021 20:10:18 +0000
parents 51f26fd967e2
children
line wrap: on
line source

/*
 * This module implements lnd-write and lnd-erase commands.
 */

#include <sys/types.h>
#include <string.h>
#include <strings.h>
#include <stdio.h>
#include <stdlib.h>
#include "curfile.h"

cmd_lnd_write(argc, argv)
	char **argv;
{
	int rc;
	u_char record[255], *fixp;

	rc = select_ef_lnd();
	if (rc < 0)
		return(rc);
	memset(record, 0xFF, curfile_record_len);
	fixp = record + curfile_record_len - 14;
	rc = encode_phone_number_arg(argv[1], fixp, 0);
	if (rc < 0)
		return(rc);
	if (argv[2]) {
		rc = qstring_arg_to_gsm7(argv[2], record,
					 curfile_record_len - 14);
		if (rc < 0)
			return(rc);
	}
	return update_rec_op(0, 0x03, record, curfile_record_len);
}

cmd_lnd_erase(argc, argv)
	char **argv;
{
	int rc;
	u_char record[255];
	unsigned count;

	rc = select_ef_lnd();
	if (rc < 0)
		return(rc);
	memset(record, 0xFF, curfile_record_len);
	for (count = 0; count < curfile_record_count; count++) {
		rc = update_rec_op(0, 0x03, record, curfile_record_len);
		if (rc < 0)
			return(rc);
	}
	return(0);
}