Changeset 1980:b43e4f60bc52 in roaraudio
- Timestamp:
- 06/12/09 04:16:18 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/driver_pwmled.c
r1978 r1980 27 27 int driver_pwmled_open_vio (struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) { 28 28 struct roar_vio_defaults def; 29 struct roar_vio_calls * calls = malloc(sizeof(struct roar_vio_calls));29 struct driver_pwmled * self = malloc(sizeof(struct driver_pwmled)); 30 30 31 if ( calls== NULL )31 if ( self == NULL ) 32 32 return -1; 33 33 … … 36 36 device = "/dev/ttyS0"; 37 37 38 if ( roar_vio_dstr_init_defaults(&def, ROAR_VIO_DEF_TYPE_NONE, O_WRONLY, 0644) == -1 ) 39 return -1; 40 41 if ( roar_vio_open_dstr(calls, device, &def, 1) == -1 ) { 42 free(calls); 38 if ( roar_vio_dstr_init_defaults(&def, ROAR_VIO_DEF_TYPE_NONE, O_WRONLY, 0644) == -1 ) { 39 free(self); 43 40 return -1; 44 41 } 45 42 46 inst->inst = calls; 43 if ( roar_vio_open_dstr(&(self->vio), device, &def, 1) == -1 ) { 44 free(self); 45 return -1; 46 } 47 48 inst->inst = self; 47 49 } else { 48 50 /* … … 50 52 return -1; 51 53 */ 54 free(self); 52 55 return -1; 53 56 } … … 67 70 68 71 int driver_pwmled_close (struct roar_vio_calls * vio) { 69 int ret = roar_vio_close( vio->inst);72 int ret = roar_vio_close(&(((struct driver_pwmled*)(vio->inst))->vio)); 70 73 71 74 if ( vio->inst != NULL ) … … 77 80 // TODO: this function should be optimized. 78 81 ssize_t driver_pwmled_write (struct roar_vio_calls * vio, void *buf, size_t count) { 79 struct roar_lpwm_state state;82 struct driver_pwmled * self = vio->inst; 80 83 81 84 if ( vio == NULL || buf == NULL ) … … 85 88 return -1; 86 89 87 if ( roar_light_pwm_new(& state, 16) == -1 )90 if ( roar_light_pwm_new(&(self->state), 16) == -1 ) 88 91 return -1; 89 92 90 if ( roar_light_pwm_set(& state, ((unsigned char*)buf)[0] / 16) == -1 )93 if ( roar_light_pwm_set(&(self->state), ((unsigned char*)buf)[0] / 16) == -1 ) 91 94 return -1; 92 95 93 return roar_light_pwm_send(& state, vio->inst, 1) == 0 ? count : -1;96 return roar_light_pwm_send(&(self->state), &(self->vio), 1) == 0 ? count : -1; 94 97 } 95 98
Note: See TracChangeset
for help on using the changeset viewer.