From d4610be5a082c0a352baedfd3bf070e59f258582 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 25 Feb 2015 15:01:22 -0600 Subject: add EUI field for accessory card eeprom --- configure.in | 2 +- src/eeprom_main.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/configure.in b/configure.in index 147567c..3cf75f4 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ AC_INIT([src/eeprom_main.c]) -AM_INIT_AUTOMAKE([mts-id-eeprom], [0.0.1]) +AM_INIT_AUTOMAKE([mts-id-eeprom], [0.2.5]) AM_CONFIG_HEADER([config.h]) AC_PROG_CC diff --git a/src/eeprom_main.c b/src/eeprom_main.c index 7be9a07..dab3933 100644 --- a/src/eeprom_main.c +++ b/src/eeprom_main.c @@ -182,6 +182,15 @@ static int ap_yaml_out(const char *name, struct mts_ap_eeprom_layout *ap_eeprom) ap_eeprom->mac_addr[3], ap_eeprom->mac_addr[4], ap_eeprom->mac_addr[5]); + fprintf(file, "eui: \"%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X\"\n", + ap_eeprom->eui[0], + ap_eeprom->eui[1], + ap_eeprom->eui[2], + ap_eeprom->eui[3], + ap_eeprom->eui[4], + ap_eeprom->eui[5], + ap_eeprom->eui[6], + ap_eeprom->eui[7]); fprintf(file, "...\n"); fclose(file); @@ -270,11 +279,20 @@ static void mts_ap_eeprom_inspect(struct mts_ap_eeprom_layout *ap_eeprom) ap_eeprom->mac_addr[3], ap_eeprom->mac_addr[4], ap_eeprom->mac_addr[5]); + log_info("eui: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", + ap_eeprom->eui[0], + ap_eeprom->eui[1], + ap_eeprom->eui[2], + ap_eeprom->eui[3], + ap_eeprom->eui[4], + ap_eeprom->eui[5], + ap_eeprom->eui[6], + ap_eeprom->eui[7]); } static void print_version(const char *name) { printf("%s (" PACKAGE ") " VERSION " (" __DATE__ " " __TIME__ ")\n", name); - printf("Copyright (C) 2010 by Multi-Tech Systems\n"); + printf("Copyright (C) 2015 by Multi-Tech Systems\n"); printf( "This program is free software; you may redistribute it under the terms of\n" "the GNU General Public License version 2 or (at your option) any later version.\n" @@ -293,6 +311,7 @@ static void usage(FILE *out) { fprintf(out, " --mac-addr |\n"); fprintf(out, " --mac-bluetooth |\n"); fprintf(out, " --mac-wifi |\n"); + fprintf(out, " --eui |\n"); fprintf(out, " --imei |\n"); fprintf(out, " --capa-gps |\n"); fprintf(out, " --capa-din |\n"); @@ -318,6 +337,7 @@ enum { CMD_OPT_MAC_ADDR, CMD_OPT_MAC_BLUETOOTH, CMD_OPT_MAC_WIFI, + CMD_OPT_EUI, CMD_OPT_IMEI, CMD_OPT_CAPA_GPS, CMD_OPT_CAPA_DIN, @@ -344,6 +364,7 @@ static struct option long_options[] = { {"mac-addr", 1, NULL, CMD_OPT_MAC_ADDR}, {"mac-bluetooth", 1, NULL, CMD_OPT_MAC_BLUETOOTH}, {"mac-wifi", 1, NULL, CMD_OPT_MAC_WIFI}, + {"eui", 1, NULL, CMD_OPT_EUI}, {"imei", 1, NULL, CMD_OPT_IMEI}, {"capa-gps", 0, NULL, CMD_OPT_CAPA_GPS}, {"capa-din", 0, NULL, CMD_OPT_CAPA_DIN}, @@ -377,6 +398,7 @@ int main(int argc, char *argv[]) { char *device_id = NULL; char *hw_version = NULL; char *mac_addr = NULL; + char *eui = NULL; struct mts_id_eeprom_layout id_eeprom; struct mts_ap_eeprom_layout ap_eeprom; @@ -526,6 +548,10 @@ int main(int argc, char *argv[]) { } break; + case CMD_OPT_EUI: + eui = optarg; + break; + case CMD_OPT_IMEI: strncpy(id_eeprom.imei, optarg, sizeof(id_eeprom.imei) - 1); break; @@ -610,7 +636,21 @@ int main(int argc, char *argv[]) { tmp = hwaddr_aton(mac_addr, ap_eeprom.mac_addr, sizeof(ap_eeprom.mac_addr)); } if (!tmp) { - log_error("invalid mac-addr %s", optarg); + log_error("invalid mac-addr %s", mac_addr); + usage(stderr); + exit(1); + } + } + if (eui) { + if (!accessory_card) { + log_error("EUI only supported on accessory card eeprom"); + usage(stderr); + exit(1); + } + + tmp = hwaddr_aton(eui, ap_eeprom.eui, sizeof(ap_eeprom.eui)); + if (!tmp) { + log_error("invalid EUI %s", eui); usage(stderr); exit(1); } -- cgit v1.2.3