00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __knet__
00012 #define __knet__
00013
00014 #ifdef __cplusplus
00015 extern "C" {
00016 #endif
00017
00021 #define KNET_BUS_ANY -1
00022 #define KNET_BUS_I2C 0
00023 #define KNET_BUS_SPI 1
00024 #define KNET_BUS_RS232 2
00025 #define KNET_MAX_BUSSES 3
00032 extern const char * knet_bus_names[];
00033
00034
00035
00036
00037 #define KNET_ORDER_LITTLE (0<<0)
00038 #define KNET_ORDER_BIG (1<<0)
00039 #define KNET_ORDER_LSB_FIRST (0<<1)
00040 #define KNET_ORDER_MSB_FIRST (1<<1)
00041 #define KNET_ORDER_BIT_SWAP (1<<2)
00042 #define KNET_ORDER_REP_ADR (1<<3)
00044
00045
00046
00047 typedef unsigned int knet_ext_t;
00048 typedef unsigned int knet_mod_t;
00049 typedef unsigned char knet_reg_t;
00050 typedef void * knet_bus_info_t;
00051 typedef void * knet_dev_info_t;
00053
00056 struct knet_dev_s;
00057 typedef struct knet_bus_s {
00058
00060 int (*exit) ( struct knet_bus_s * bus );
00061
00063 struct knet_dev_s *(*open) ( struct knet_bus_s * bus ,
00064 knet_ext_t ext ,
00065 knet_mod_t mod ,
00066 const char * name ,
00067 int argc , char * argv[] );
00068
00070 void (*close) ( struct knet_bus_s * bus ,
00071 struct knet_dev_s * device );
00072
00074 int (*transfer) ( struct knet_bus_s * bus ,
00075 struct knet_dev_s * device ,
00076 const char * write_buf , unsigned int write_len ,
00077 char * read_buf , unsigned read_len );
00078
00080 int (*read) ( struct knet_bus_s * bus ,
00081 struct knet_dev_s * device ,
00082 char * buf ,
00083 unsigned int len );
00084
00086 int (*write) ( struct knet_bus_s * bus ,
00087 struct knet_dev_s * device ,
00088 const char * buf ,
00089 unsigned int len );
00090
00092 struct knet_dev_s * devices;
00093
00095 pthread_mutex_t lock;
00096
00098 knet_bus_info_t bus_info;
00099
00100 int usage_counter;
00101 }
00102 knet_bus_t;
00103
00104
00105
00106
00107 typedef struct knet_dev_s {
00108
00110 knet_bus_t *bus;
00111
00113 unsigned long order;
00114
00116 knet_ext_t ext_addr;
00117
00119 knet_mod_t mod_addr;
00120
00122 const char *name;
00123
00124 unsigned int usage_counter;
00125
00127 knet_dev_info_t info;
00128
00130 struct knet_dev_s *next;
00131 }
00132 knet_dev_t;
00133
00134
00135
00136
00137
00138
00139 extern int knet_init( int argc , char * argv[] );
00140
00141 extern void knet_exit( void );
00142
00143 extern knet_dev_t * knet_bus_find_device( knet_bus_t * bus ,
00144 knet_ext_t ext_addr ,
00145 knet_mod_t mod_addr );
00146
00147 extern knet_dev_t *knet_bus_find_device_by_name( knet_bus_t * bus ,
00148 const char * dev_name );
00149
00150 extern knet_dev_t * knet_open( const char * device ,
00151 int preferred_bus ,
00152 int argc , char * argv[] );
00153
00154 extern void knet_set_order( knet_dev_t * dev , unsigned long order );
00155
00156 extern void knet_close( knet_dev_t * dev );
00157
00158 extern knet_dev_t * knet_device_create( knet_bus_t * bus ,
00159 knet_ext_t ext_addr ,
00160 knet_mod_t mod_addr ,
00161 const char * name );
00162
00163 extern int knet_device_destroy( knet_dev_t * dev );
00164
00165 extern int knet_lltransfer( knet_dev_t * dev ,
00166 const char * write_buf ,
00167 unsigned int write_len ,
00168 char * read_buf ,
00169 unsigned int read_len );
00170
00171 extern int knet_llread( knet_dev_t * dev ,
00172 char * buf ,
00173 unsigned int len );
00174
00175 extern int knet_llwrite( knet_dev_t * dev ,
00176 const char * buf ,
00177 unsigned int len );
00178
00179 extern int knet_convert( knet_dev_t * dev ,
00180 char * buf ,
00181 unsigned int len ,
00182 int type );
00183
00184 extern int knet_read8( knet_dev_t * dev ,
00185 knet_reg_t reg ,
00186 unsigned char * val );
00187
00188 extern int knet_read16( knet_dev_t * dev ,
00189 knet_reg_t reg ,
00190 unsigned short * val );
00191
00192 extern int knet_read32( knet_dev_t * dev ,
00193 knet_reg_t reg ,
00194 unsigned long * val );
00195 extern int knet_readxBytes( knet_dev_t * dev ,
00196 knet_reg_t reg ,
00197 unsigned char * val, unsigned char rx_len );
00198
00199
00200 extern int knet_write8( knet_dev_t * dev ,
00201 knet_reg_t reg ,
00202 unsigned char val );
00203
00204 extern int knet_write16( knet_dev_t * dev ,
00205 knet_reg_t reg ,
00206 unsigned short val );
00207
00208 extern int knet_write32( knet_dev_t * dev ,
00209 knet_reg_t reg ,
00210 unsigned long val );
00211
00212
00213 extern int knet_read( knet_dev_t * dev , knet_reg_t reg );
00214
00215
00216 #define knet_write( dev , reg , val ) knet_write8( dev , reg , val )
00217
00218 extern int knet_vprintf( knet_dev_t * dev ,
00219 const char * format ,
00220 va_list argptr );
00221
00222 extern int knet_printf( knet_dev_t * dev ,
00223 const char * format , ... );
00224
00225
00226 extern int knet_read_string( knet_dev_t * dev ,
00227 char * buffer ,
00228 unsigned int size ,
00229 unsigned char terminator );
00230
00231
00232
00233 #ifdef __cplusplus
00234 }
00235 #endif
00236
00237 #endif