/** * \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 * \author Daniele Basile * * $WIZ$ module_name = "kfile_block" * $WIZ$ module_depends = "kfile", "kblock" */ #ifndef IO_KFILE_BLOCK_H #define IO_KFILE_BLOCK_H #include #include #include /** * KFileBlock context. */ typedef struct KFileBlock { KFile fd; ///< KFile context KBlock *blk; ///< KBlock device } KFileBlock; /** * 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 */