diff options
Diffstat (limited to 'HAL-afb/HAL_MOST_UNICENS/wrap_volume.c')
-rw-r--r-- | HAL-afb/HAL_MOST_UNICENS/wrap_volume.c | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/HAL-afb/HAL_MOST_UNICENS/wrap_volume.c b/HAL-afb/HAL_MOST_UNICENS/wrap_volume.c index cf70647..8087a04 100644 --- a/HAL-afb/HAL_MOST_UNICENS/wrap_volume.c +++ b/HAL-afb/HAL_MOST_UNICENS/wrap_volume.c @@ -13,9 +13,9 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * + * */ -#define _GNU_SOURCE +#define _GNU_SOURCE #define AFB_BINDING_VERSION 2 #include <string.h> @@ -31,88 +31,88 @@ static int wrap_volume_service_timeout_cb(sd_event_source* source, uint64_t timer __attribute__((__unused__)), void *userdata __attribute__((__unused__))) { - + uint8_t ret; sd_event_source_unref(source); ret = lib_most_volume_service(); - + if (ret != 0U) { AFB_ERROR("lib_most_volume_service returns %d", ret); } - + return 0; } static void wrap_volume_service_cb(uint16_t timeout) { uint64_t usec; sd_event_now(afb_daemon_get_event_loop(), CLOCK_BOOTTIME, &usec); - sd_event_add_time( afb_daemon_get_event_loop(), NULL, CLOCK_MONOTONIC, - usec + (timeout*1000), - 250, - wrap_volume_service_timeout_cb, + sd_event_add_time( afb_daemon_get_event_loop(), NULL, CLOCK_MONOTONIC, + usec + (timeout*1000), + 250, + wrap_volume_service_timeout_cb, NULL); } /* Retrieves a new value adapted to a new maximum value. Minimum value is * always zero. */ static int wrap_volume_calculate(int value, int max_old, int max_new) { - + if (value > max_old) value = max_old; - + value = (value * max_new) / max_old; /* calculate range: 0..255 */ assert(value <= max_new); - + return value; } extern int wrap_volume_init(void) { - + uint8_t ret = 0U; lib_most_volume_init_t mv_init; - + mv_init.writei2c_cb = &wrap_ucs_i2cwrite; mv_init.service_cb = wrap_volume_service_cb; - + ret = lib_most_volume_init(&mv_init); - + return ret * (-1); } extern int wrap_volume_master(int volume) { - + int new_value, ret; - + new_value = wrap_volume_calculate(volume, 100, 255); ret = lib_most_volume_set(LIB_MOST_VOLUME_MASTER, (uint8_t)new_value); - + if (ret != 0) { AFB_ERROR("wrap_volume_master: volume library not ready."); ret = ret * (-1); /* make return value negative */ } - + return ret; } extern int wrap_volume_pcm(int *volume_ptr, int volume_sz) { - + const int MAX_PCM_CHANNELS = 6; int cnt, ret; assert(volume_ptr != NULL); assert(volume_sz <= MAX_PCM_CHANNELS); - + for (cnt = 0; cnt < volume_sz; cnt ++) { - + int new_value = wrap_volume_calculate(volume_ptr[cnt], 100, 255); ret = lib_most_volume_set((enum lib_most_volume_channel_t)cnt, (uint8_t)new_value); - + if (ret != 0) { AFB_ERROR("wrap_volume_pcm: volume library not ready."); ret = ret * (-1); /* make return value negative */ break; } } - + return ret; } |