Subversion Repositories DashDisplay

Rev

Rev 70 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 70 Rev 79
Line 43... Line 43...
43
  for (int ptr = 0; ptr < NVRAM_WORDS; ptr++)
43
  for (int ptr = 0; ptr < NVRAM_WORDS; ptr++)
44
  {
44
  {
45
    // erase the entry just found
45
    // erase the entry just found
46
    if (NVRAM_Base[ptr].data.tag == data.data.tag)
46
    if (NVRAM_Base[ptr].data.tag == data.data.tag)
47
    {
47
    {
48
      // erase previous data
48
      // erase previous data, delete any entries that have a matching tag
49
      WriteNVRAM(&NVRAM_Base[ptr], MARKED_ERASED);
49
      WriteNVRAM(&NVRAM_Base[ptr], MARKED_ERASED);
-
 
50
      // record the next location to the marked erased location
-
 
51
      // so that future writes occur further along in the Flash
50
      base = ptr;
52
      if (base == 0)
51
      break;
53
        base = ptr;
52
    }
54
    }
53
  }
55
  }
-
 
56
 
54
  // search forward for next erased or empty element, use it
57
  // search forward for next erased or empty element, use it
55
  for (int offset = 1; offset < NVRAM_WORDS + 1; offset++)
58
  for (int offset = 1; offset < NVRAM_WORDS + 1; offset++)
56
  {
59
  {
57
    int index = (base + offset) % NVRAM_WORDS;
60
    int index = (base + offset) % NVRAM_WORDS;
58
    if (NVRAM_Base[index].u32 == MARKED_ERASED.u32 || NVRAM_Base[index].u32 == HARDWARE_ERASED.u32)
61
    if (NVRAM_Base[index].u32 == MARKED_ERASED.u32 || NVRAM_Base[index].u32 == HARDWARE_ERASED.u32)