1
0

memory-areas.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. const storageAccessProtocol = require('../../protocols/storage-access/index.js')
  2. const READ_ONLY_MEMORY_AREAS = [
  3. storageAccessProtocol.AREA.CODEINFO,
  4. storageAccessProtocol.AREA.CODE
  5. ]
  6. const MANUAL_MEMORY_AREAS = [
  7. { key: storageAccessProtocol.AREA.ADDR32, label: 'addr32', name: 'ADDR32', addressWidth: 32 },
  8. { key: storageAccessProtocol.AREA.DATA, label: 'data', name: 'DATA' },
  9. { key: storageAccessProtocol.AREA.IDATA, label: 'idata', name: 'IDATA' },
  10. { key: storageAccessProtocol.AREA.XDATA, label: 'xdata', name: 'XDATA' },
  11. { key: storageAccessProtocol.AREA.CODE, label: 'code', name: 'CODE', readOnly: true }
  12. ]
  13. function getManualMemoryAreaOptions() {
  14. return MANUAL_MEMORY_AREAS.map((area) => ({ ...area }))
  15. }
  16. function getMemoryTypeFromName(value) {
  17. const memoryArea = String(value || '').trim().toUpperCase()
  18. if (memoryArea === 'ADDR32' || memoryArea === 'ADDRESS32') return storageAccessProtocol.AREA.ADDR32
  19. if (memoryArea === 'BIT') return storageAccessProtocol.AREA.DATA
  20. const area = storageAccessProtocol.AREA[memoryArea]
  21. return area === undefined ? null : area
  22. }
  23. function isReadOnlyMemoryType(memoryType) {
  24. return READ_ONLY_MEMORY_AREAS.indexOf(Number(memoryType)) >= 0
  25. }
  26. module.exports = {
  27. getManualMemoryAreaOptions,
  28. getMemoryTypeFromName,
  29. isReadOnlyMemoryType,
  30. READ_ONLY_MEMORY_AREAS
  31. }