#define CODE_ID "U2ND" /* from code_pattern.h */
#define CODE_PATTERN "W54S" /* from code_pattern.h */
+#define PBOT_PATTERN "PBOT"
#define CYBERTAN_VERSION "v3.37.2" /* from cyutils.h */
void usage(void)
{
- fprintf(stderr, "Usage: addpattern [-i trxfile] [-o binfile] [-p pattern] [-g] [-v v#.#.#] [-{0|1|2}]\n");
+ fprintf(stderr, "Usage: addpattern [-i trxfile] [-o binfile] [-p pattern] [-g] [-b] [-v v#.#.#] [-{0|1|2|4}]\n");
exit(EXIT_FAILURE);
}
char *ifn = NULL;
char *ofn = NULL;
char *pattern = CODE_PATTERN;
+ char *pbotpat = PBOT_PATTERN;
char *version = CYBERTAN_VERSION;
int gflag = 0;
+ int pbotflag = 0;
int c;
int v0, v1, v2;
size_t off, n;
hdr = (struct code_header *) buf;
memset(hdr, 0, sizeof(struct code_header));
- while ((c = getopt(argc, argv, "i:o:p:gv:012")) != -1) {
+ while ((c = getopt(argc, argv, "i:o:p:gbv:0124")) != -1) {
switch (c) {
case 'i':
ifn = optarg;
case 'g':
gflag = 1;
break;
+ case 'b':
+ pbotflag = 1;
+ break;
case 'v': /* extension to allow setting version */
version = optarg;
break;
hdr->flags |= SUPPORT_INTEL_FLASH;
hdr->flags |= SUPPORT_5325E_SWITCH;
break;
+ case '4':
+ /* V4 firmware sets the flags to 0x1f */
+ hdr->hw_ver = 0;
+ hdr->flags = 0x1f;
+ break;
default:
usage();
}
memcpy(&hdr->magic, pattern, 4);
+ if (pbotflag)
+ memcpy(&hdr->res1, pbotpat, 4);
hdr->fwdate[0] = ptm->tm_year % 100;
hdr->fwdate[1] = ptm->tm_mon + 1;
hdr->fwdate[2] = ptm->tm_mday;