--- embedtools/src/athctl.c 2010/11/05 00:43:27 1.1.2.11 +++ embedtools/src/athctl.c 2011/06/08 12:45:41 1.2 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ - * $Id: athctl.c,v 1.1.2.11 2010/11/05 00:43:27 misho Exp $ + * $Id: athctl.c,v 1.2 2011/06/08 12:45:41 misho Exp $ * *************************************************************************/ #include "global.h" @@ -375,6 +375,28 @@ flashFile(const char *csName, u_char *mem) return 0; } +static int +regDomain(u_char *mem, u_short newval) +{ + int ret, data; + + if ((data = readWord(mem, ATH_OFFSET_REGDOMAIN)) == -1) + return -1; + + printf("Current value 0x%04X ", (u_short) (data >> 16)); + if (newval != (u_short) -1) { + printf("will change to 0x%04X\n", newval); + + if ((ret = writeWord(mem, ATH_OFFSET_REGDOMAIN, newval)) == -1) + return -1; + + printf("Updated regulatory domain is 0x%04X\n", (u_short) (ret >> 16)); + } else + printf("\nCurrent regulatory domain is 0x%04X\n", (u_short) (data >> 16)); + + return 0; +} + // ---------------------------------------------------- int @@ -456,8 +478,12 @@ main(int argc, char **argv) } else newval = (u_short) strtoul(argv[1], NULL, 0); } - if (mode & 0x40 && argv[1]) - newval = (u_short) strtoul(argv[1], NULL, 0); + if (mode & 0x40) { + if (argv[1]) + newval = (u_short) strtoul(argv[1], NULL, 0); + else + newval = (u_short) -1; + } if (mode & 1) if ((ret = calcDistance(ino, dist, cor)) < 1) @@ -516,12 +542,10 @@ main(int argc, char **argv) if (mode & 0x40) { if (!(basemem = devOpen(baseaddr))) return 2; - /* if ((ret = regDomain(basemem, newval)) < 1) { devClose(basemem); return 3; } - */ devClose(basemem); }