From 496490fee31f7bf331a9249e8976e6141bebae06 Mon Sep 17 00:00:00 2001
From: Sergi Hernandez Juan <shernand@iri.upc.edu>
Date: Thu, 15 Oct 2020 15:30:52 +0200
Subject: [PATCH] Added a device ID to the memory structure to separate
 different slave devices EEPROM registers on the same microcontroller.

---
 memory/include/memory.h | 1 +
 memory/src/memory.c     | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/memory/include/memory.h b/memory/include/memory.h
index 5c14282..0753fb1 100644
--- a/memory/include/memory.h
+++ b/memory/include/memory.h
@@ -21,6 +21,7 @@ typedef struct
   TMemModule *mem_modules[MAX_NUM_MEM_MODULES];
   unsigned short int (*eeprom_write_data)(unsigned short int address,unsigned short int data);
   unsigned short int (*eeprom_read_data)(unsigned short int address,unsigned short int *data);
+  unsigned char device_id;
   unsigned char data[RAM_SIZE];
   unsigned short int total_eeprom;
   unsigned short int total_ram;
diff --git a/memory/src/memory.c b/memory/src/memory.c
index a2c9e59..c2bccc1 100644
--- a/memory/src/memory.c
+++ b/memory/src/memory.c
@@ -30,6 +30,7 @@ void mem_init(TMemory *memory)
   /* initialize internal variables */
   memory->total_eeprom=0;
   memory->total_ram=0;
+  memory->device_id=0x00;
 }
 
 void mem_initialize_data(TMemory *memory)
@@ -44,7 +45,7 @@ void mem_initialize_data(TMemory *memory)
   {
     for(i=0;i<EEPROM_SIZE;i++)
     {
-      if(memory->eeprom_read_data(i,&data))
+      if(memory->eeprom_read_data((memory->device_id<<8)+i,&data))
         eeprom_data[i]=0x00;
       else
         eeprom_data[i]=data&0x00FF;
-- 
GitLab