diff --git a/test/simulator/simulator.hpp b/test/simulator/simulator.hpp
index 9fe5c2b..29d1ef6 100644
--- a/test/simulator/simulator.hpp
+++ b/test/simulator/simulator.hpp
@@ -58,6 +58,18 @@
      */
     void addChip(const Chip& i_chip);
 
+    /** @brief Retrieve ScomReg from map and return its value */
+    uint64_t getScomReg(const Chip& i_chip, uint32_t i_address)
+    {
+        return iv_scomRegData[i_chip][i_address];
+    }
+
+    /** @breif Retrieve idScomReg from map and return its value */
+    uint64_t getIdScomReg(const Chip& i_chip, uint64_t i_address)
+    {
+        return iv_idScomRegData[i_chip][i_address];
+    }
+
     /** @brief Adds a SCOM register to iv_scomRegData. */
     void addScomReg(const Chip& i_chip, uint32_t i_address, uint64_t i_value)
     {
diff --git a/test/simulator/user_interface.cpp b/test/simulator/user_interface.cpp
index 7ed998a..2bcc2af 100644
--- a/test/simulator/user_interface.cpp
+++ b/test/simulator/user_interface.cpp
@@ -22,20 +22,29 @@
     HEI_ASSERT(nullptr != o_buffer);
     HEI_ASSERT(0 != io_bufSize);
 
+    // Get access to data through the singleton
+    SimulatorData& theSimData = SimulatorData::getSingleton();
+
     switch (i_regType)
     {
-        // BEGIN temporary code
-        // TODO: add cases for REG_TYPE_SCOM and REG_TYPE_ID_SCOM
         case REG_TYPE_SCOM:
         {
-            uint64_t x = htobe64(0x8800000000000000);
-            memcpy(o_buffer, &x, sizeof(x));
+            // Get the register value and change its endianness
+            uint64_t regValue =
+                htobe64(theSimData.getScomReg(i_chip, (uint32_t)i_address));
+            // Get size of register value for calling code and memcopy
+            io_bufSize = sizeof(regValue);
+            memcpy(o_buffer, &regValue, io_bufSize);
             break;
         }
         case REG_TYPE_ID_SCOM:
         {
-            uint64_t x = htobe64(0x8000);
-            memcpy(o_buffer, &x, sizeof(x));
+            // Get the register value and change its endianness
+            uint64_t regValue =
+                htobe64(theSimData.getIdScomReg(i_chip, i_address));
+            // Get size of register value for calling code and memcopy
+            io_bufSize = sizeof(regValue);
+            memcpy(o_buffer, &regValue, io_bufSize);
             break;
         }
         // END temporary code
