ersp.inc

Go to the documentation of this file.
00001 #ifndef ERSP_INC
00002 #define ERSP_INC
00003 
00004 typedef enum {
00005    ERSP_DRIVE,     /* Drive interface */
00006    ERSP_AVOID,     /* Avoidance interface */
00007    ERSP_BATTERY,   /* Battery interface */
00008    ERSP_BUMP,      /* Bump sensor */
00009    ERSP_IR_BINARY, /* Digital IR sensor */
00010    ERSP_IR_RANGE,  /* Range IR sensor */
00011 } ersp_dev_type_t;
00012 
00013 typedef int ersp_robot_dev_t;
00014 
00015 struct ersp_dev {
00016    ersp_robot_dev_t robot_id;
00017    ersp_robot_dev_t player_id;
00018    ersp_dev_type_t type;
00019    const char *id;
00020 };
00021 
00022 
00023 #define ERSP_INTERFACE(ROBOT, TYPE, ID) \
00024         enum ROBOT##_##TYPE##_##ID##_id {
00025 
00026 #define ERSP_DEV(ROBOT, ID, TYPE, NAME) \
00027                 ROBOT##_##ID,
00028 
00029 #define ERSP_INTERFACE_END \
00030         };
00031 
00032 #include ERSP_INCLUDE
00033 
00034 #undef ERSP_INTERFACE
00035 #undef ERSP_INTERFACE_END
00036 #undef ERSP_DEV
00037 
00043 enum {
00044 
00045 #define ERSP_INTERFACE(ROBOT, TYPE, NAME)
00046 #define ERSP_DEV(ROBOT, ID, TYPE, NAME) \
00047         ROBOT##_##TYPE##_##ID,
00048 #define ERSP_INTERFACE_END
00049 
00050 #include ERSP_INCLUDE
00051 
00052 #undef ERSP_INTERFACE
00053 #undef ERSP_INTERFACE_END
00054 #undef ERSP_DEV
00055 
00056    ERSP_DEVICES,
00057 };
00058 
00059 
00060 #define ERSP_INTERFACE(ROBOT, TYPE, NAME) \
00061    static inline char *ROBOT##_##TYPE##_##NAME##_name(int id) \
00062    { \
00063       switch (id) {
00064 
00065 #define ERSP_DEV(ROBOT, ID, TYPE, NAME) \
00066          case ROBOT##_##ID: return NAME;
00067 
00068 #define ERSP_INTERFACE_END \
00069       } \
00070       return "unknown type"; \
00071    }
00072       
00073 
00074 
00075 #include ERSP_INCLUDE
00076 
00077 #undef ERSP_INTERFACE
00078 #undef ERSP_INTERFACE_END
00079 #undef ERSP_DEV
00080 
00081 #endif

Generated on Sat Jan 13 03:11:09 2007 for ERSP Player driver by  doxygen 1.5.1