#define MAX_HDR_SIZE 128
#define MAGIC_OFFSET 0x3be2
-#define BEACON_INTERVAL 50000
+#define DEFAULT_BEACON_INTERVAL 50000
#define ROMLOAD_INIT_BAUDRATE B19200
#define ROMLOAD_DL_BAUDRATE B115200
#define ROMLOAD_BLOCK_HDR_LEN 10
int dump_rx;
int dump_tx;
+ int beacon_interval;
/* data to be downloaded */
uint8_t *data;
if (!(rc == sizeof(romload_ident_cmd)))
printf("Error sending identification beacon\n");
- bsc_schedule_timer(p, 0, BEACON_INTERVAL);
+ bsc_schedule_timer(p, 0, dnload.beacon_interval);
}
}
if (!(rc == 1))
printf("Error sending identification beacon\n");
- bsc_schedule_timer(p, 0, BEACON_INTERVAL);
+ bsc_schedule_timer(p, 0, dnload.beacon_interval);
}
}
serial_set_baudrate(ROMLOAD_INIT_BAUDRATE);
tick_timer.cb = &beacon_timer_cb;
tick_timer.data = &tick_timer;
- bsc_schedule_timer(&tick_timer, 0, BEACON_INTERVAL);
+ bsc_schedule_timer(&tick_timer, 0, dnload.beacon_interval);
}
} else if (!memcmp(buffer, phone_nack, sizeof(phone_nack))) {
printf("Received DOWNLOAD NACK from phone, something went"
"something went wrong, aborting\n");
serial_set_baudrate(ROMLOAD_INIT_BAUDRATE);
dnload.romload_state = WAITING_IDENTIFICATION;
- bsc_schedule_timer(&tick_timer, 0, BEACON_INTERVAL);
+ bsc_schedule_timer(&tick_timer, 0, dnload.beacon_interval);
}
break;
case WAITING_CHECKSUM_ACK:
"match ours, aborting\n", ~buffer[2]);
serial_set_baudrate(ROMLOAD_INIT_BAUDRATE);
dnload.romload_state = WAITING_IDENTIFICATION;
- bsc_schedule_timer(&tick_timer, 0, BEACON_INTERVAL);
+ bsc_schedule_timer(&tick_timer, 0, dnload.beacon_interval);
bufptr -= 1;
}
break;
printf("Received branch nack, aborting\n");
serial_set_baudrate(ROMLOAD_INIT_BAUDRATE);
dnload.romload_state = WAITING_IDENTIFICATION;
- bsc_schedule_timer(&tick_timer, 0, BEACON_INTERVAL);
+ bsc_schedule_timer(&tick_timer, 0, dnload.beacon_interval);
}
break;
default:
"\t\t [ -l /tmp/osmocom_loader ]\n" \
"\t\t [ -m {c123,c123xor,c140,c140xor,c155,romload,mtk} ]\n" \
"\t\t [ -c /to-be-chainloaded-file.bin ]\n" \
+ "\t\t [ -i beacon-interval (mS) ]\n" \
"\t\t file.bin\n\n" \
"* Open serial port /dev/ttyXXXX (connected to your phone)\n" \
"* Perform handshaking with the ramloader in the phone\n" \
dnload.mode = MODE_C123;
dnload.chainload_filename = NULL;
+ dnload.beacon_interval = DEFAULT_BEACON_INTERVAL;
- while ((opt = getopt(argc, argv, "d:hl:p:m:c:s:v")) != -1) {
+ while ((opt = getopt(argc, argv, "d:hl:p:m:c:s:i:v")) != -1) {
switch (opt) {
case 'p':
serial_dev = optarg;
case 'c':
dnload.chainload_filename = optarg;
break;
+ case 'i':
+ dnload.beacon_interval = atoi(optarg) * 1000;
+ break;
case 'h':
default:
usage(argv[0]);
serial_set_baudrate(ROMLOAD_INIT_BAUDRATE);
tick_timer.cb = &beacon_timer_cb;
tick_timer.data = &tick_timer;
- bsc_schedule_timer(&tick_timer, 0, BEACON_INTERVAL);
+ bsc_schedule_timer(&tick_timer, 0, dnload.beacon_interval);
}
else if (dnload.mode == MODE_MTK) {
tmp_load_address = MTK_ADDRESS;
serial_set_baudrate(MTK_INIT_BAUDRATE);
tick_timer.cb = &mtk_timer_cb;
tick_timer.data = &tick_timer;
- bsc_schedule_timer(&tick_timer, 0, BEACON_INTERVAL);
+ bsc_schedule_timer(&tick_timer, 0, dnload.beacon_interval);
}
dnload.load_address[0] = (tmp_load_address >> 24) & 0xff;