summaryrefslogtreecommitdiffstats
path: root/HAL-afb/HAL_MOST_UNICENS/wrap_volume.c
diff options
context:
space:
mode:
Diffstat (limited to 'HAL-afb/HAL_MOST_UNICENS/wrap_volume.c')
-rw-r--r--HAL-afb/HAL_MOST_UNICENS/wrap_volume.c50
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;
}