+\r
+ /* Assume FLASH page programming by default, as it is the common case */\r
+ uint8_t WriteCommand = NVM_CMD_WRITEFLASHPAGE;\r
+ uint8_t WriteBuffCommand = NVM_CMD_LOADFLASHPAGEBUFF;\r
+ uint8_t EraseBuffCommand = NVM_CMD_ERASEFLASHPAGEBUFF;\r
+ bool PagedMemory = true;\r
+ \r
+ if (WriteMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_APPL)\r
+ {\r
+ WriteCommand = NVM_CMD_WRITEAPPSECPAGE;\r
+ }\r
+ else if (WriteMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_BOOT)\r
+ {\r
+ WriteCommand = NVM_CMD_WRITEBOOTSECPAGE;\r
+ }\r
+ else if (WriteMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_EEPROM)\r
+ {\r
+ WriteCommand = NVM_CMD_WRITEEEPROMPAGE;\r
+ WriteBuffCommand = NVM_CMD_LOADEEPROMPAGEBUFF;\r
+ EraseBuffCommand = NVM_CMD_ERASEEEPROMPAGEBUFF;\r
+ }\r
+ else if (WriteMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_USERSIG)\r
+ {\r
+ /* User signature is paged, but needs us to manually indicate the mode bits since the host doesn't set them */\r
+ WriteMemory_XPROG_Params.PageMode = (XPRG_PAGEMODE_ERASE | XPRG_PAGEMODE_WRITE);\r
+ WriteCommand = NVM_CMD_WRITEUSERSIG;\r
+ }\r
+ else if (WriteMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_FUSE)\r
+ {\r
+ WriteCommand = NVM_CMD_WRITEFUSE;\r
+ PagedMemory = false;\r
+ }\r
+ else if (WriteMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_LOCKBITS)\r
+ {\r
+ WriteCommand = NVM_CMD_WRITELOCK;\r
+ PagedMemory = false;\r
+ }\r