Changeset 4811:8d0d713ca0c1 in roaraudio for roard/driver.c
- Timestamp:
- 03/27/11 13:38:18 (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/driver.c
r4809 r4811 145 145 } 146 146 147 int driver_open (DRIVER_USERDATA_T * inst, int * driver_id, char * driver, char * device, struct roar_audio_info * info) { 147 int driver_openvio(struct roar_vio_calls * calls, 148 int * driver_id, char * driver /* NOTE: this is not part of struct roar_driver's def! */, 149 char * device, struct roar_audio_info * info, int fh, 150 struct roar_stream_server * sstream) { 148 151 int i; 149 152 … … 156 159 #endif 157 160 161 ROAR_DBG("driver_openvio(*): searching for driver '%s'...", driver); 162 158 163 for (i = 0; g_driver[i].name != NULL; i++) { 159 164 if ( strcmp(g_driver[i].name, driver) == 0 ) { 160 ROAR_DBG("driver_open(*): found driver: id = %i", i); 161 162 *driver_id = i; 163 164 if ( g_driver[i].vio_init != NULL ) { 165 if ( (*inst = malloc(sizeof(struct roar_vio_calls))) == NULL ) 166 return -1; 167 168 memset(*inst, 0, sizeof(struct roar_vio_calls)); 169 170 if ( (i = g_driver[i].vio_init(*inst, device, info, -1, NULL)) == -1 ) { 171 free(*inst); 172 return -1; 173 } 174 return i; 175 } 176 177 if ( g_driver[i].open ) { 178 ROAR_WARN("driver_open(*): driver(%s) uses old non-vio interface!", driver); 179 return g_driver[i].open(inst, device, info); 180 } 181 182 return 0; 183 } 184 } 185 186 return -1; 187 } 188 189 int driver_openvio(struct roar_vio_calls * calls, 190 int * driver_id, char * driver /* NOTE: this is not part of struct roar_driver's def! */, 191 char * device, struct roar_audio_info * info, int fh, 192 struct roar_stream_server * sstream) { 193 int i; 194 195 #ifdef ROAR_DRIVER_DEFAULT 196 if ( driver == NULL ) 197 driver = ROAR_DRIVER_DEFAULT; 198 #else 199 if ( driver == NULL ) 200 return -1; 201 #endif 202 203 ROAR_DBG("driver_openvio(*): searching for driver '%s'...", driver); 204 205 for (i = 0; g_driver[i].name != NULL; i++) { 206 if ( strcmp(g_driver[i].name, driver) == 0 ) { 207 ROAR_DBG("driver_open(*): found driver: id = %i", i); 165 ROAR_DBG("driver_openvio(*): found driver: id = %i", i); 208 166 209 167 *driver_id = i; … … 219 177 } 220 178 221 ROAR_WARN("driver_open (*): driver(%s) uses old non-vio interface!", driver);179 ROAR_WARN("driver_openvio(*): driver(%s) uses old non-vio interface!", driver); 222 180 ROAR_ERR("driver_openvio(calls=%p, driver_id={%i}, driver='%s', device='%s', info=%p, fh=%i): not a VIO driver!", 223 181 calls, i, driver, device, info, fh); … … 232 190 } 233 191 234 int driver_close(DRIVER_USERDATA_T inst, int driver) {235 int ret = 0;236 ROAR_DBG("driver_close(inst=%p, driver=%i) = ?", inst, driver);237 238 if ( driver == -1 )239 return -1;240 241 if ( g_driver[driver].close )242 ret = g_driver[driver].close(inst);243 244 if ( g_driver[driver].vio_init != NULL )245 free(inst);246 247 return ret;248 }249 250 192 int driver_closevio(struct roar_vio_calls * calls, int driver) { 251 193 ROAR_DBG("driver_closevio(calls=%p, driver=%i) = ?", calls, driver); … … 259 201 if ( calls->close != NULL ) 260 202 roar_vio_close(calls); 261 262 return 0;263 }264 265 int driver_write(DRIVER_USERDATA_T inst, int driver, char * buf, int len) {266 if ( driver == -1 )267 return -1;268 269 if ( g_driver[driver].vio_init != NULL )270 return roar_vio_write((struct roar_vio_calls *) inst, buf, len);271 272 return 0;273 }274 275 int driver_read (DRIVER_USERDATA_T inst, int driver, char * buf, int len) {276 if ( driver == -1 )277 return -1;278 279 if ( g_driver[driver].vio_init != NULL )280 return roar_vio_read((struct roar_vio_calls *) inst, buf, len);281 203 282 204 return 0;
Note: See TracChangeset
for help on using the changeset viewer.