eeprom.c revision 217770
1249259Sdim 2249259Sdim/* 3249259Sdim * Copyright (c) 2010-2011 Adrian Chadd, Xenion Pty Ltd. 4249259Sdim * 5249259Sdim * Redistribution and use in source and binary forms, with or without 6249259Sdim * modification, are permitted provided that the following conditions 7249259Sdim * are met: 8249259Sdim * 1. Redistributions of source code must retain the above copyright 9249259Sdim * notice, this list of conditions and the following disclaimer. 10249259Sdim * 2. Redistributions in binary form must reproduce the above copyright 11249259Sdim * notice, this list of conditions and the following disclaimer in the 12249259Sdim * documentation and/or other materials provided with the distribution. 13249259Sdim * 14249259Sdim * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15249259Sdim * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16276479Sdim * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17261991Sdim * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18249259Sdim * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19249259Sdim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20249259Sdim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21249259Sdim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22261991Sdim * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23261991Sdim * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24321369Sdim * SUCH DAMAGE. 25321369Sdim * 26249259Sdim * $FreeBSD: head/tools/tools/ath/ath_ee_v4k_print/eeprom.c 217770 2011-01-24 06:46:03Z adrian $ 27261991Sdim */ 28261991Sdim 29249259Sdim#include <stdio.h> 30249259Sdim#include <stdlib.h> 31261991Sdim#include <unistd.h> 32249259Sdim#include <string.h> 33261991Sdim#include <sys/types.h> 34261991Sdim#include <err.h> 35249259Sdim 36249259Sdim#include "eeprom.h" 37249259Sdim 38249259Sdimvoid 39249259Sdimload_eeprom_dump(const char *file, uint16_t *buf) 40249259Sdim{ 41249259Sdim unsigned int r[8]; 42249259Sdim FILE *fp; 43249259Sdim char b[1024]; 44249259Sdim int i; 45249259Sdim 46261991Sdim fp = fopen(file, "r"); 47261991Sdim if (!fp) 48261991Sdim err(1, "fopen"); 49249259Sdim 50249259Sdim while (!feof(fp)) { 51249259Sdim if (fgets(b, 1024, fp) == NULL) 52249259Sdim break; 53249259Sdim if (feof(fp)) 54249259Sdim break; 55249259Sdim if (strlen(b) > 0) 56249259Sdim b[strlen(b)-1] = '\0'; 57249259Sdim if (strlen(b) == 0) 58321369Sdim break; 59321369Sdim sscanf(b, "%x: %x %x %x %x %x %x %x %x\n", 60261991Sdim &i, &r[0], &r[1], &r[2], &r[3], &r[4], 61249259Sdim &r[5], &r[6], &r[7]); 62249259Sdim buf[i++] = r[0]; 63321369Sdim buf[i++] = r[1]; 64321369Sdim buf[i++] = r[2]; 65249259Sdim buf[i++] = r[3]; 66321369Sdim buf[i++] = r[4]; 67321369Sdim buf[i++] = r[5]; 68321369Sdim buf[i++] = r[6]; 69321369Sdim buf[i++] = r[7]; 70321369Sdim } 71321369Sdim fclose(fp); 72321369Sdim} 73321369Sdim