Implement syslog.
[bertos.git] / bertos / io / kfile_block.h
index 9694ea94c5c97cf4b1b527f66427acca65156068..c5dc26c5591363db131a6d5d1260fbf086b068cc 100644 (file)
  *
  * -->
  *
+ * \defgroup kfile_block KFile interface over KBlock
+ * \ingroup core
+ * \{
+ *
  * \brief KFile interface over a KBlock.
  *
+ * With this module, you can access a KBlock device
+ * with the handy KFile interface.
+ * In order to achieve this, the block device must support partial block write.
+ *
+ * Error codes returned by kfile_error() are specific of the underlying
+ * KBlock implementation.
+ *
+ * Make sure you have trimmed the KBlock to avoid overwriting something.
+ * Example:
+ * \code
+ * // init a derived instance of KBlock
+ * // any will do.
+ * Flash flash;
+ * flash_init(&flash, 0);
+ * kblock_trim(&flash.blk, trim_start, internal_flash.blk.blk_cnt - trim_start);
+ *
+ * // now create and initialize the kfile_block instance
+ * KFileBlock kfb;
+ * kfileblock_init(&kfb, &flash.blk);
+ *
+ * // now you can access the Flash in a file like fashion
+ * kfile_read(&kfb.fd, buf, 20);
+ * \endcode
+ *
+ * \author Francesco Sacchi <batt@develer.com>
+ * \author Daniele Basile <asterix@develer.com>
+ *
+ * $WIZ$ module_name = "kfile_block"
+ * $WIZ$ module_depends = "kfile", "kblock"
  */
 
 #ifndef IO_KFILE_BLOCK_H
 #include <io/kblock.h>
 #include <io/kfile.h>
 
+/**
+ * KFileBlock context.
+ */
 typedef struct KFileBlock
 {
-       KFile fd;
-       KBlock *b;
+       KFile fd;    ///< KFile context
+       KBlock *blk; ///< KBlock device
 } KFileBlock;
 
-void kfileblock_init(KFileBlock *fb, KBlock *b);
+/**
+ * Init a KFile over KBlock.
+ * After this you can access your KBlock device with a handy KFile interface.
+ *
+ * \note The block device must support partial block write in order to support
+ *       random write access.
+ *
+ * \param fb KFileBlock context.
+ * \param blk block device to be accessed with a KFile interface.
+ */
+void kfileblock_init(KFileBlock *fb, KBlock *blk);
+
+/** \} */ //defgroup kfile_block
 
 #endif /* IO_KFILE_KBLOCK_H */