diff options
-rw-r--r-- | hw/hw_eeprom.c | 47 | ||||
-rw-r--r-- | hw/hw_eeprom.h | 15 | ||||
-rw-r--r-- | test/.gitignore | 2 | ||||
-rw-r--r-- | test/dump_eeprom.c | 74 |
4 files changed, 138 insertions, 0 deletions
diff --git a/hw/hw_eeprom.c b/hw/hw_eeprom.c index e69de29..10ae817 100644 --- a/hw/hw_eeprom.c +++ b/hw/hw_eeprom.c @@ -0,0 +1,47 @@ +#include "hw_eeprom.h" + + + +int dump_eeprom( rtlsdr_dev_t *dev, uint8_t *data, uint16_t len ) +{ + int fret = 0; + + if ( len != EEPROM_SIZE ) + { + printf("EEPROM sump size expected to be %d\n", EEPROM_SIZE); + return -1; + } + + fret = hw_read_eeprom( dev, data, 0, len ); + if ( fret != 0 ) + { + printf("Cannot read eeprom rtlsdr err (%d)\n", fret); + return -1; + } + + return 0; +} + + +int restore_eeprom( rtlsdr_dev_t *dev, uint8_t *data, uint16_t len ) +{ + int fret = 0; + + if ( len != EEPROM_SIZE ) + { + printf("EEPROM sump size expected to be %d\n", EEPROM_SIZE); + return -1; + } + + fret = hw_write_eeprom( dev, data, 0, len ); + if ( fret != 0 ) + { + printf("Cannot write eeprom rtlsdr err(%d)\n", fret); + return -1; + } + + + return 0; +} + + diff --git a/hw/hw_eeprom.h b/hw/hw_eeprom.h index e69de29..ac3ec0a 100644 --- a/hw/hw_eeprom.h +++ b/hw/hw_eeprom.h @@ -0,0 +1,15 @@ +#ifndef __RADIOLA_HW_EEPROM_H +#define __RADIOLA_HW_EEPROM_H + +#include "hw.h" + +#define EEPROM_SIZE 256 + +int dump_eeprom( rtlsdr_dev_t *dev, uint8_t *data, uint16_t len ); +int restore_eeprom( rtlsdr_dev_t *dev, uint8_t *data, uint16_t len ); + +//int eeprom_read_config(); +//int eeprom_write_config(); + + +#endif
\ No newline at end of file diff --git a/test/.gitignore b/test/.gitignore index 7bd96c4..a37bb52 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -8,3 +8,5 @@ ui_gl_filter sdr_fm div20 *.o +dump0 +dump_eeprom diff --git a/test/dump_eeprom.c b/test/dump_eeprom.c new file mode 100644 index 0000000..b32e74e --- /dev/null +++ b/test/dump_eeprom.c @@ -0,0 +1,74 @@ +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> + +//rtlsdr +#include <rtl-sdr.h> +#include <hw/sdr.h> +#include <hw/hw.h> +#include <hw/hw_eeprom.h> + +int print_dump( uint8_t *data, uint16_t size ) +{ + int i; + const int line_sz = 32; + for (i=0; i<size;i++) + { + printf("%02x ", data[i]); + if (i % 32 == 31) + { + printf("\n"); + } + } + for (i=0; i<size;i++) + { + if ( isprint(data[i]) ) + { + printf("%c", data[i]); + } else + { + printf("."); + } + if (i % 32 == 31) + { + printf("\n"); + } + } + return 0; +} + +int main( ) +{ + int i; + uint32_t dev_num; + rtlsdr_dev_t *dev=NULL; + int ret; + + const int buf_size = 256; + uint8_t buf[buf_size]; + + memset(buf, 0, buf_size ); + + dev_num = rtlsdr_get_device_count(); + printf("Found %d device(s)\n", dev_num ); + + printf("List device names:\n"); + for (i=0; i<dev_num; i++) + { + hw_open( &dev, i ); + + ret = dump_eeprom( dev, buf, buf_size ); + if (ret != 0) + { + printf("Couldnt dump eeprom\n"); + } else + { + printf("Dumped device %d\n",i); + } + print_dump( buf, buf_size ); + + hw_close( dev ); + } + + return 0; +}
\ No newline at end of file |