From fe35d4017a6db2de9d5a4f96e6451e27fd98062f Mon Sep 17 00:00:00 2001 From: Federico Amedeo Izzo Date: Sat, 23 Jan 2021 10:05:18 +0100 Subject: [PATCH] CPS: Fix zone data reading --- platform/drivers/NVM/nvmem_MDUV3x0.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/platform/drivers/NVM/nvmem_MDUV3x0.c b/platform/drivers/NVM/nvmem_MDUV3x0.c index b8be9b53..f8158618 100644 --- a/platform/drivers/NVM/nvmem_MDUV3x0.c +++ b/platform/drivers/NVM/nvmem_MDUV3x0.c @@ -332,7 +332,7 @@ int nvm_readZoneData(zone_t *zone, uint16_t pos) mduv3x0Zone_t zoneData; mduv3x0ZoneExt_t zoneExtData; uint32_t zoneAddr = zoneBaseAddr + pos * sizeof(mduv3x0Zone_t); - uint32_t zoneExtAddr = zoneBaseAddr + pos * sizeof(mduv3x0Zone_t); + uint32_t zoneExtAddr = zoneExtBaseAddr + pos * sizeof(mduv3x0ZoneExt_t); W25Qx_readData(zoneAddr, ((uint8_t *) &zoneData), sizeof(mduv3x0Zone_t)); W25Qx_readData(zoneExtAddr, ((uint8_t *) &zoneExtData), sizeof(mduv3x0ZoneExt_t)); W25Qx_sleep(); @@ -346,9 +346,15 @@ int nvm_readZoneData(zone_t *zone, uint16_t pos) zone->name[i] = ((char) (zoneData.name[i] & 0x00FF)); } // Copy zone channel indexes - memcpy(zone->member, zoneData.member_a, sizeof(uint16_t) * 16); + for(uint16_t i = 0; i < 16; i++) + { + zone->member[i] = zoneData.member_a[i]; + } // Copy zone extension channel indexes - memcpy(zone->member[16], zoneExtData.ext_a, sizeof(uint16_t) * 48); + for(uint16_t i = 0; i < 48; i++) + { + zone->member[16 + i] = zoneExtData.ext_a[i]; + } return 0; }