Remove kfile sub-classes aggregation.
authorbatt <batt@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 19 Feb 2008 15:35:36 +0000 (15:35 +0000)
committerbatt <batt@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 19 Feb 2008 15:35:36 +0000 (15:35 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@1143 38d2e660-2303-0410-9eaa-f027e97ec537

cfg/macros.h
drv/dataflash.h
drv/ser.h
fs/battfs.h
kern/kfile.h

index b3be457fb9b8c185aa0d1932678fdc39db1403cc..f0520eff74b24d5a145eabe29f994aa2d0496f88 100644 (file)
 #define ROTL(var, rot) (((var) << (rot)) | ((var) >> ((sizeof(var) * 8) - (rot))))
 /*\}*/
 
+/**
+ * Make an id from 4 letters, useful for
+ * file formats and kfile ids.
+ */
+#define MAKE_ID(a,b,c,d) \
+       ( ((uint32_t)(a) << 24) \
+       | ((uint32_t)(b) << 16) \
+       | ((uint32_t)(c) <<  8) \
+       | ((uint32_t)(d) <<  0) )
+
+/**
+ * Type for id generated by MAKE_ID().
+ */
+typedef uint32_t id_t;
+
 #endif /* MACROS_H */
 
index c77cf49669ea2058074390af13fe7adc56de510e..61858167b66f3f92461f0760b5732e72af622e3c 100644 (file)
@@ -93,6 +93,11 @@ typedef struct KFileDataflash
        dataflash_setCS_t *setCS;       ///< Callback used to set CS pin of dataflash.
 } KFileDataflash;
 
+/**
+ * ID for dataflash.
+ */
+#define KFT_DATAFLASH MAKE_ID('D', 'F', 'L', 'H')
+
 /**
  * Convert + ASSERT from generic KFile to KFileDataflash.
  */
index f4edc6841487cd99dace0b03d260423092e487eb..c0f7b8bb036007d9b441129bedbb713c30b04b9d 100644 (file)
--- a/drv/ser.h
+++ b/drv/ser.h
@@ -158,6 +158,12 @@ typedef struct KFileSerial
        Serial *ser;
 } KFileSerial;
 
+/**
+ * ID for serial.
+ */
+#define KFT_SERIAL MAKE_ID('S', 'E', 'R', 'L')
+
+
 INLINE KFileSerial * KFILESERIAL(KFile *fd)
 {
        ASSERT(fd->_type == KFT_SERIAL);
index 0456fcfb6a841388d16a37dc7d83a45343cd030a..59d8fece34fe164b470996e19ef7778cb3b6cb54 100644 (file)
@@ -207,7 +207,7 @@ typedef struct BattFsSuper
 
        disk_size_t disk_size;   ///< Size of the disk, in bytes (page_count * page_size).
        disk_size_t free_bytes;  ///< Free space on the disk.
-       
+
        List file_opened_list;       ///< List used to keep trace of open files.
        /* TODO add other fields. */
 } BattFsSuper;
@@ -238,6 +238,11 @@ typedef struct KFileBattFs
        pgcnt_t *start;     ///< Pointer to page_array file start position.
 } KFileBattFs;
 
+/**
+ * Id for battfs file descriptors.
+ */
+#define KFT_BATTFS MAKE_ID('B', 'T', 'F', 'S')
+
 /**
  * Macro used to cast a KFile to a KFileBattFs.
  * Also perform dynamic type check.
index 7d0009f54a3bb4da2f1436f949f0bb93bb8b26ce..60b0ad64948602502fec65ffa55621dfa546f736 100644 (file)
@@ -164,21 +164,6 @@ typedef int (*ErrorFunc_t) (struct KFile *fd);
 typedef void (*ClearErrFunc_t) (struct KFile *fd);
 /* \} */
 
-/**
- * KFile type.
- * Used at runtime and in debug mode only to check
- * "dynamic casts".
- * \note Add here new KFile types.
- */
-typedef enum KFileType
-{
-       KFT_GENERIC, ///< Generic
-       KFT_SERIAL,  ///< Serial driver
-       KFT_BATTFS,  ///< BattFS file
-       KFT_DATAFLASH, ///< Dataflash
-       KFT_CNT
-} KFileType;
-
 /**
  * Context data for callback functions which operate on
  * pseudo files.
@@ -194,18 +179,13 @@ typedef struct KFile
        FlushFunc_t    flush;
        ErrorFunc_t    error;
        ClearErrFunc_t clearerr;
-       DB(KFileType _type); ///< Used to keep trace, at runtime, of obj type.
+       DB(id_t _type); ///< Used to keep trace, at runtime, of obj type.
 
        /* NOTE: these must _NOT_ be size_t on 16bit CPUs! */
        uint32_t seek_pos;
        uint32_t size;
 } KFile;
 
-/**
- * Check if \a fd is a generic KFile type.
- */
-#define KFILE_ASSERT_GENERIC(fd) ASSERT(fd->_type == KFT_GENERIC)
-
 /**
  * Generic implementation of kfile_seek.
  */