00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __kb_config__
00012 #define __kb_config__
00013
00018 #define KB_CONFIG_DIR_INTERNAL KB_CONFIG_DIRECTORY "/"
00019
00020
00021
00022
00023
00025 #define KB_DEVICE_CLASS_ANY -1
00026
00028 #define KB_DEVICE_CLASS_I2C 0
00029
00031 #define KB_DEVICE_CLASS_SPI 1
00032
00034 #define KB_DEVICE_CLASS_MODULE 2
00035
00037 #define KB_DEVICE_CLASS_RS232 3
00038
00040 #define KB_DEVICE_MAX_CLASS 4
00041
00042
00045 typedef struct kb_section_config_s
00046 {
00048 int module_bus;
00049
00051 int module_bus_addr;
00052
00054 unsigned int device_count;
00055
00057 kb_symbol_t * devices;
00058
00060 unsigned int register_count;
00061
00063 kb_symbol_t * registers;
00064
00066 unsigned int alias_count;
00067
00069 kb_symbol_t * aliases;
00070
00072 kb_symbol_t * next;
00073 }
00074 kb_section_config_t;
00075
00076
00079 typedef struct kb_device_config_s
00080 {
00082 struct
00083 {
00084 int defined;
00085 int address;
00086 char device_name[ KB_SYMBOL_NAME_SIZE ];
00087 }
00088 kclass[ KB_DEVICE_MAX_CLASS ];
00089
00091 kb_symbol_t * next;
00092
00094 kb_section_config_t * section;
00095 }
00096 kb_device_config_t;
00097
00098
00101 typedef struct kb_register_config_s
00102 {
00104 int value;
00105
00107 kb_symbol_t * next;
00108 }
00109 kb_register_config_t;
00110
00111
00114 typedef struct kb_alias_config_s
00115 {
00117 char name[ KB_SYMBOL_NAME_SIZE ];
00118
00120 kb_symbol_t * ptr;
00121
00123 kb_symbol_t * next;
00124 }
00125 kb_alias_config_t;
00126
00127
00128
00129
00130
00131 extern int kb_config_init( int argc , char * argv[] );
00132
00133 extern void kb_config_exit( void );
00134
00135 extern kb_device_config_t * kb_lookup_device( const char * name );
00136
00137 extern kb_register_config_t * kb_lookup_register( const char * name );
00138
00139 extern int kb_parse_config_file( const char * file );
00140
00141 extern int kb_enum_section( int (*func)( const char * name ,
00142 kb_section_config_t * section ,
00143 void * context ) ,
00144 void * context );
00145
00146 extern int kb_enum_alias( const char * section ,
00147 int (*func)( const char * name ,
00148 kb_alias_config_t * alias ,
00149 void * context ) ,
00150 void * context );
00151
00152 extern int kb_enum_device( const char * section ,
00153 int (*func)( const char * name ,
00154 kb_device_config_t * device ,
00155 void * context ) ,
00156 void * context );
00157
00158 extern int kb_enum_register( const char * section ,
00159 int (*func)( const char * name ,
00160 kb_register_config_t * reg ,
00161 void * context ) ,
00162 void * context );
00163
00164
00165 #endif