⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memorystoragep.nc

📁 tinyos-2.x.rar
💻 NC
字号:
module MemoryStorageP
{
  provides interface BlockRead;
  uses interface Crc;
}

implementation
{
  storage_addr_t retAddr;
  void *retBuf;
  storage_len_t retLen;
  uint16_t retCrc;

  task void taskReadDone()
  {
    signal BlockRead.readDone(retAddr, retBuf, retLen, SUCCESS);
  }

  command error_t BlockRead.read(storage_addr_t addr, void* buf, storage_len_t len)
  {
    storage_len_t i;
    uint8_t *from = (uint8_t *)((void *)((uint16_t)addr));
    
    for (i = 0; i < len; i++) {
      ((uint8_t *)buf)[i] = from[i];
    }
    
    retAddr = addr;
    retBuf = buf;
    retLen = len;
    post taskReadDone();
    return SUCCESS;
  }
  
  task void taskCrcDone()
  {
    signal BlockRead.computeCrcDone(retAddr, retLen, retCrc, SUCCESS);
  }
  
  command error_t BlockRead.computeCrc(storage_addr_t addr, storage_len_t len, uint16_t crc)
  {
    retCrc = call Crc.seededCrc16(crc, (void *)addr, len);
    retAddr = addr;
    retLen = len;
    post taskCrcDone();
    return SUCCESS;
  }
  
  command storage_len_t BlockRead.getSize()
  {
    return 0;   // Not sure what to do
  }
  
  default event void BlockRead.readDone(storage_addr_t addr, void* buf, storage_len_t len, error_t error) {}
  default event void BlockRead.computeCrcDone(storage_addr_t addr, storage_len_t len, uint16_t crc, error_t error) {}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -