diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/fingerprint/fingerprint.c | 24 | ||||
-rw-r--r-- | modules/usbaudio/audio_hal.c | 84 |
2 files changed, 47 insertions, 61 deletions
diff --git a/modules/fingerprint/fingerprint.c b/modules/fingerprint/fingerprint.c index 0346518..091d7ba 100644 --- a/modules/fingerprint/fingerprint.c +++ b/modules/fingerprint/fingerprint.c @@ -33,12 +33,27 @@ static int fingerprint_close(hw_device_t *dev) } static int fingerprint_enroll(struct fingerprint_device __unused *dev, + uint32_t __unused gid, uint32_t __unused timeout_sec) { return FINGERPRINT_ERROR; } +static int fingerprint_enroll_cancel(struct fingerprint_device __unused *dev) { + return FINGERPRINT_ERROR; +} + static int fingerprint_remove(struct fingerprint_device __unused *dev, - uint32_t __unused fingerprint_id) { + fingerprint_finger_id_t __unused fingerprint_id) { + return FINGERPRINT_ERROR; +} + +static int fingerprint_set_active_group(struct fingerprint_device __unused *dev, + uint32_t __unused gid) { + return FINGERPRINT_ERROR; +} + +static int fingerprint_authenticate(struct fingerprint_device __unused *dev, + uint64_t __unused operation_id) { return FINGERPRINT_ERROR; } @@ -61,12 +76,15 @@ static int fingerprint_open(const hw_module_t* module, const char __unused *id, memset(dev, 0, sizeof(fingerprint_device_t)); dev->common.tag = HARDWARE_DEVICE_TAG; - dev->common.version = HARDWARE_MODULE_API_VERSION(1, 0); + dev->common.version = FINGERPRINT_MODULE_API_VERSION_2_0; dev->common.module = (struct hw_module_t*) module; dev->common.close = fingerprint_close; dev->enroll = fingerprint_enroll; + dev->enroll_cancel = fingerprint_enroll_cancel; dev->remove = fingerprint_remove; + dev->set_active_group = fingerprint_set_active_group; + dev->authenticate = fingerprint_authenticate; dev->set_notify = set_notify_callback; dev->notify = NULL; @@ -81,7 +99,7 @@ static struct hw_module_methods_t fingerprint_module_methods = { fingerprint_module_t HAL_MODULE_INFO_SYM = { .common = { .tag = HARDWARE_MODULE_TAG, - .module_api_version = FINGERPRINT_MODULE_API_VERSION_1_0, + .module_api_version = FINGERPRINT_MODULE_API_VERSION_2_0, .hal_api_version = HARDWARE_HAL_API_VERSION, .id = FINGERPRINT_HARDWARE_MODULE_ID, .name = "Demo Fingerprint HAL", diff --git a/modules/usbaudio/audio_hal.c b/modules/usbaudio/audio_hal.c index 2814e37..3163424 100644 --- a/modules/usbaudio/audio_hal.c +++ b/modules/usbaudio/audio_hal.c @@ -79,7 +79,7 @@ struct stream_out { struct audio_device *dev; /* hardware information - only using this for the lock */ - alsa_device_profile * profile; + alsa_device_profile * profile; /* Points to the alsa_device_profile in the audio_device */ alsa_device_proxy proxy; /* state of the stream */ unsigned hal_channel_count; /* channel count exposed to AudioFlinger. @@ -101,7 +101,7 @@ struct stream_in { struct audio_device *dev; /* hardware information - only using this for the lock */ - alsa_device_profile * profile; + alsa_device_profile * profile; /* Points to the alsa_device_profile in the audio_device */ alsa_device_proxy proxy; /* state of the stream */ unsigned hal_channel_count; /* channel count exposed to AudioFlinger. @@ -192,8 +192,9 @@ static size_t convert_32_to_16(const int32_t * in_buff, size_t num_in_samples, s * device A pointer to a variable to receive the parsed-out device number. * NOTE: The variables pointed to by card and device return -1 (undefined) if the * associated key/value pair is not found in the provided string. + * Return true if the kvpairs string contain a card/device spec, false otherwise. */ -static void parse_card_device_params(const char *kvpairs, int *card, int *device) +static bool parse_card_device_params(const char *kvpairs, int *card, int *device) { struct str_parms * parms = str_parms_create_str(kvpairs); char value[32]; @@ -214,6 +215,8 @@ static void parse_card_device_params(const char *kvpairs, int *card, int *device } str_parms_destroy(parms); + + return *card >= 0 && *device >= 0; } static char * device_get_parameters(alsa_device_profile * profile, const char * keys) @@ -254,7 +257,7 @@ static char * device_get_parameters(alsa_device_profile * profile, const char * char* result_str = str_parms_to_str(result); str_parms_destroy(result); - ALOGV("usb:audio_hw::device_get_parameters = %s", result_str); + ALOGV("device_get_parameters = %s", result_str); return result_str; } @@ -337,7 +340,7 @@ static int out_dump(const struct audio_stream *stream, int fd) static int out_set_parameters(struct audio_stream *stream, const char *kvpairs) { - ALOGV("usb:audio_hw::out out_set_parameters() keys:%s", kvpairs); + ALOGV("out_set_parameters() keys:%s", kvpairs); struct stream_out *out = (struct stream_out *)stream; @@ -346,12 +349,16 @@ static int out_set_parameters(struct audio_stream *stream, const char *kvpairs) int card = -1; int device = -1; + if (!parse_card_device_params(kvpairs, &card, &device)) { + // nothing to do + return ret_value; + } + + /* Lock the device because that is where the profile lives */ pthread_mutex_lock(&out->dev->lock); pthread_mutex_lock(&out->lock); - parse_card_device_params(kvpairs, &card, &device); - - if (card >= 0 && device >= 0 && !profile_is_cached_for(out->profile, card, device)) { + if (!profile_is_cached_for(out->profile, card, device)) { /* cannot read pcm device info if playback is active */ if (!out->standby) ret_value = -ENOSYS; @@ -402,8 +409,7 @@ static int out_set_volume(struct audio_stream_out *stream, float left, float rig /* must be called with hw device and output stream mutexes locked */ static int start_output_stream(struct stream_out *out) { - ALOGV("usb:audio_hw::out start_output_stream(card:%d device:%d)", - out->profile->card, out->profile->device); + ALOGV("start_output_stream(card:%d device:%d)", out->profile->card, out->profile->device); return proxy_open(&out->proxy); } @@ -502,8 +508,7 @@ static int adev_open_output_stream(struct audio_hw_device *dev, struct audio_stream_out **stream_out, const char *address /*__unused*/) { - ALOGV("usb:audio_hw::out adev_open_output_stream()" - "handle:0x%X, device:0x%X, flags:0x%X, addr:%s", + ALOGV("adev_open_output_stream() handle:0x%X, device:0x%X, flags:0x%X, addr:%s", handle, devices, flags, address); struct audio_device *adev = (struct audio_device *)dev; @@ -614,8 +619,7 @@ static void adev_close_output_stream(struct audio_hw_device *dev, struct audio_stream_out *stream) { struct stream_out *out = (struct stream_out *)stream; - ALOGV("usb:audio_hw::out adev_close_output_stream(c:%d d:%d)", - out->profile->card, out->profile->device); + ALOGV("adev_close_output_stream(c:%d d:%d)", out->profile->card, out->profile->device); /* Close the pcm device */ out_standby(&stream->common); @@ -709,7 +713,7 @@ static int in_dump(const struct audio_stream *stream, int fd) static int in_set_parameters(struct audio_stream *stream, const char *kvpairs) { - ALOGV("usb: audio_hw::in in_set_parameters() keys:%s", kvpairs); + ALOGV("in_set_parameters() keys:%s", kvpairs); struct stream_in *in = (struct stream_in *)stream; @@ -720,11 +724,14 @@ static int in_set_parameters(struct audio_stream *stream, const char *kvpairs) int card = -1; int device = -1; + if (!parse_card_device_params(kvpairs, &card, &device)) { + // nothing to do + return ret_value; + } + pthread_mutex_lock(&in->dev->lock); pthread_mutex_lock(&in->lock); - parse_card_device_params(kvpairs, &card, &device); - if (card >= 0 && device >= 0 && !profile_is_cached_for(in->profile, card, device)) { /* cannot read pcm device info if playback is active */ if (!in->standby) @@ -781,8 +788,7 @@ static int in_set_gain(struct audio_stream_in *stream, float gain) /* must be called with hw device and output stream mutexes locked */ static int start_input_stream(struct stream_in *in) { - ALOGV("usb:audio_hw::start_input_stream(card:%d device:%d)", - in->profile->card, in->profile->device); + ALOGV("ustart_input_stream(card:%d device:%d)", in->profile->card, in->profile->device); return proxy_open(&in->proxy); } @@ -808,7 +814,6 @@ static ssize_t in_read(struct audio_stream_in *stream, void* buffer, size_t byte } pthread_mutex_unlock(&in->dev->lock); - alsa_device_profile * profile = in->profile; /* @@ -911,7 +916,7 @@ static int adev_open_input_stream(struct audio_hw_device *dev, const char *address /*__unused*/, audio_source_t source __unused) { - ALOGV("usb: in adev_open_input_stream() rate:%" PRIu32 ", chanMask:0x%" PRIX32 ", fmt:%" PRIu8, + ALOGV("in adev_open_input_stream() rate:%" PRIu32 ", chanMask:0x%" PRIX32 ", fmt:%" PRIu8, config->sample_rate, config->channel_mask, config->format); struct stream_in *in = (struct stream_in *)calloc(1, sizeof(struct stream_in)); @@ -1022,43 +1027,6 @@ static void adev_close_input_stream(struct audio_hw_device *dev, struct audio_st */ static int adev_set_parameters(struct audio_hw_device *dev, const char *kvpairs) { - ALOGV("audio_hw:usb adev_set_parameters(%s)", kvpairs); - - struct audio_device * adev = (struct audio_device *)dev; - - char value[32]; - int param_val; - - struct str_parms * parms = str_parms_create_str(kvpairs); - - /* Check for the "disconnect" message */ - param_val = str_parms_get_str(parms, "disconnect", value, sizeof(value)); - if (param_val >= 0) { - audio_devices_t device = (audio_devices_t)atoi(value); - - param_val = str_parms_get_str(parms, "card", value, sizeof(value)); - int alsa_card = param_val >= 0 ? atoi(value) : -1; - - param_val = str_parms_get_str(parms, "device", value, sizeof(value)); - int alsa_device = param_val >= 0 ? atoi(value) : -1; - - if (alsa_card >= 0 && alsa_device >= 0) { - /* "decache" the profile */ - pthread_mutex_lock(&adev->lock); - if (device == AUDIO_DEVICE_OUT_USB_DEVICE && - profile_is_cached_for(&adev->out_profile, alsa_card, alsa_device)) { - profile_decache(&adev->out_profile); - } - if (device == AUDIO_DEVICE_IN_USB_DEVICE && - profile_is_cached_for(&adev->in_profile, alsa_card, alsa_device)) { - profile_decache(&adev->in_profile); - } - pthread_mutex_unlock(&adev->lock); - } - } - - str_parms_destroy(parms); - return 0; } |