+<div class="section">
+<h1><a id="appendix-b-storage-interfaces" name="appendix-b-storage-interfaces">Appendix B. Storage interfaces</a></h1>
+<p>These interfaces are presented briefly here for reference; please refer
+to the TinyOS documentation for a full description of the commands,
+events and their parameters.</p>
+<div class="section">
+<h2><a id="b-1-blockstorage-interfaces" name="b-1-blockstorage-interfaces">B.1 BlockStorage interfaces</a></h2>
+<p>The BlockStorage interfaces are:</p>
+<pre class="literal-block">
+interface BlockRead {
+ command error_t read(storage_addr_t addr, void* buf, storage_len_t len);
+ event void readDone(storage_addr_t addr, void* buf, storage_len_t len,
+ error_t error);
+
+ command error_t computeCrc(storage_addr_t addr, storage_len_t len,
+ uint16_t crc);
+ event void computeCrcDone(storage_addr_t addr, storage_len_t len,
+ uint16_t crc, error_t error);
+
+ command storage_len_t getSize();
+}
+
+interface BlockWrite {
+ command error_t write(storage_addr_t addr, void* buf, storage_len_t len);
+ event void writeDone(storage_addr_t addr, void* buf, storage_len_t len,
+ error_t error);
+
+ command error_t erase();
+ event void eraseDone(error_t error);
+
+ command error_t sync();
+ event void syncDone(error_t error);
+}
+</pre>
+</div>
+<div class="section">
+<h2><a id="b-2-configstorage-interfaces" name="b-2-configstorage-interfaces">B.2 ConfigStorage interfaces</a></h2>
+<p>The ConfigStorage interfaces are:</p>
+<pre class="literal-block">
+interface Mount {
+ command error_t mount();
+ event void mountDone(error_t error);
+}
+
+interface ConfigStorage {
+ command error_t read(storage_addr_t addr, void* buf, storage_len_t len);
+ event void readDone(storage_addr_t addr, void* buf, storage_len_t len,
+ error_t error);
+
+ command error_t write(storage_addr_t addr, void* buf, storage_len_t len);
+ event void writeDone(storage_addr_t addr, void* buf, storage_len_t len,
+ error_t error);
+
+ command error_t commit();
+ event void commitDone(error_t error);
+
+ command storage_len_t getSize();
+ command bool valid();
+}
+</pre>
+</div>
+<div class="section">
+<h2><a id="b-3-logstorage-interfaces" name="b-3-logstorage-interfaces">B.3 LogStorage interfaces</a></h2>
+<p>The LogStorage interfaces are:</p>
+<pre class="literal-block">
+interface LogRead {
+ command error_t read(void* buf, storage_len_t len);
+ event void readDone(void* buf, storage_len_t len, error_t error);
+
+ command storage_cookie_t currentOffset();
+
+ command error_t seek(storage_cookie_t offset);
+ event void seekDone(error_t error);
+
+ command storage_len_t getSize();
+}
+
+interface LogWrite {
+ command error_t append(void* buf, storage_len_t len);
+ event void appendDone(void* buf, storage_len_t len, bool recordsLost,
+ error_t error);
+
+ command storage_cookie_t currentOffset();
+
+ command error_t erase();
+ event void eraseDone(error_t error);
+
+ command error_t sync();
+ event void syncDone(error_t error);
+}
+</pre>
+</div>
+</div>