diff options
Diffstat (limited to 'apps/plugins')
-rw-r--r-- | apps/plugins/lua/include_lua/pcm.lua | 36 | ||||
-rw-r--r-- | apps/plugins/lua/lua.make | 4 | ||||
-rw-r--r-- | apps/plugins/lua/rocklib.c | 66 | ||||
-rwxr-xr-x | apps/plugins/lua/rocklib_aux.pl | 4 |
4 files changed, 108 insertions, 2 deletions
diff --git a/apps/plugins/lua/include_lua/pcm.lua b/apps/plugins/lua/include_lua/pcm.lua new file mode 100644 index 0000000000..318669bd67 --- /dev/null +++ b/apps/plugins/lua/include_lua/pcm.lua | |||
@@ -0,0 +1,36 @@ | |||
1 | --[[ Lua RB pcm Operations | ||
2 | /*************************************************************************** | ||
3 | * __________ __ ___. | ||
4 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
5 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
6 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
7 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
8 | * \/ \/ \/ \/ \/ | ||
9 | * $Id$ | ||
10 | * | ||
11 | * Copyright (C) 2018 William Wilgus | ||
12 | * | ||
13 | * This program is free software; you can redistribute it and/or | ||
14 | * modify it under the terms of the GNU General Public License | ||
15 | * as published by the Free Software Foundation; either version 2 | ||
16 | * of the License, or (at your option) any later version. | ||
17 | * | ||
18 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
19 | * KIND, either express or implied. | ||
20 | * | ||
21 | ****************************************************************************/ | ||
22 | ]] | ||
23 | |||
24 | -- [[ conversion to old style pcm_ functions ]] | ||
25 | if not rb.pcm then rb.splash(rb.HZ, "No Support!") return nil end | ||
26 | |||
27 | rb.pcm_apply_settings = function() rb.pcm("applysettings") end | ||
28 | rb.pcm_set_frequency = function(freq) rb.pcm("setfrequency", freq) end | ||
29 | rb.pcm_play_pause = function(bplay) rb.pcm("playpause", bplay) end | ||
30 | rb.pcm_play_stop = function() rb.pcm("playstop") end | ||
31 | rb.pcm_play_lock = function() rb.pcm("playlock") end | ||
32 | rb.pcm_play_unlock = function() rb.pcm("playunlock") end | ||
33 | rb.pcm_is_playing = function() return rb.pcm("isplaying") end | ||
34 | rb.pcm_is_paused = function() return rb.pcm("ispaused") end | ||
35 | rb.pcm_calculate_peaks = function() return rb.pcm("calculatepeaks") end | ||
36 | rb.pcm_get_bytes_waiting = function() return rb.pcm("getbyteswaiting") end | ||
diff --git a/apps/plugins/lua/lua.make b/apps/plugins/lua/lua.make index ece71cc4d6..56df860545 100644 --- a/apps/plugins/lua/lua.make +++ b/apps/plugins/lua/lua.make | |||
@@ -16,7 +16,9 @@ LUA_OBJ := $(call c2obj, $(LUA_SRC)) | |||
16 | OTHER_SRC += $(LUA_SRC) | 16 | OTHER_SRC += $(LUA_SRC) |
17 | 17 | ||
18 | LUA_INCLUDEDIR := $(LUA_SRCDIR)/include_lua | 18 | LUA_INCLUDEDIR := $(LUA_SRCDIR)/include_lua |
19 | LUA_INCLUDELIST := $(addprefix $(LUA_BUILDDIR)/,audio.lua blit.lua color.lua draw.lua image.lua lcd.lua math_ex.lua print.lua timer.lua playlist.lua) | 19 | LUA_INCLUDELIST := $(addprefix $(LUA_BUILDDIR)/,audio.lua blit.lua color.lua draw.lua \ |
20 | image.lua lcd.lua math_ex.lua print.lua \ | ||
21 | timer.lua playlist.lua pcm.lua) | ||
20 | 22 | ||
21 | 23 | ||
22 | ifndef APP_TYPE | 24 | ifndef APP_TYPE |
diff --git a/apps/plugins/lua/rocklib.c b/apps/plugins/lua/rocklib.c index c9242d99bd..ed76122118 100644 --- a/apps/plugins/lua/rocklib.c +++ b/apps/plugins/lua/rocklib.c | |||
@@ -334,6 +334,68 @@ RB_WRAP(audio) | |||
334 | return 1; | 334 | return 1; |
335 | } | 335 | } |
336 | 336 | ||
337 | #if CONFIG_CODEC == SWCODEC | ||
338 | RB_WRAP(pcm) | ||
339 | { | ||
340 | enum e_pcm {PCM_APPLYSETTINGS = 0, PCM_ISPLAYING, PCM_ISPAUSED, | ||
341 | PCM_PLAYSTOP, PCM_PLAYPAUSE, PCM_PLAYLOCK, PCM_PLAYUNLOCK, | ||
342 | PCM_CALCULATEPEAKS, PCM_SETFREQUENCY, PCM_GETBYTESWAITING, PCM_ECOUNT}; | ||
343 | |||
344 | const char *pcm_option[] = {"applysettings", "isplaying", "ispaused", | ||
345 | "playstop", "playpause", "playlock", "playunlock", | ||
346 | "calculatepeaks", "setfrequency", "getbyteswaiting", NULL}; | ||
347 | bool b_result; | ||
348 | int left, right; | ||
349 | size_t byteswait; | ||
350 | |||
351 | lua_pushnil(L); /*push nil so options w/o return have something to return */ | ||
352 | |||
353 | int option = luaL_checkoption (L, 1, NULL, pcm_option); | ||
354 | switch(option) | ||
355 | { | ||
356 | default: | ||
357 | case PCM_APPLYSETTINGS: | ||
358 | rb->pcm_apply_settings(); | ||
359 | break; | ||
360 | case PCM_ISPLAYING: | ||
361 | b_result = rb->pcm_is_playing(); | ||
362 | lua_pushboolean(L, b_result); | ||
363 | break; | ||
364 | case PCM_ISPAUSED: | ||
365 | b_result = rb->pcm_is_paused(); | ||
366 | lua_pushboolean(L, b_result); | ||
367 | break; | ||
368 | case PCM_PLAYPAUSE: | ||
369 | rb->pcm_play_pause(luaL_checkboolean(L, 1)); | ||
370 | break; | ||
371 | case PCM_PLAYSTOP: | ||
372 | rb->pcm_play_stop(); | ||
373 | break; | ||
374 | case PCM_PLAYLOCK: | ||
375 | rb->pcm_play_lock(); | ||
376 | break; | ||
377 | case PCM_PLAYUNLOCK: | ||
378 | rb->pcm_play_unlock(); | ||
379 | break; | ||
380 | case PCM_CALCULATEPEAKS: | ||
381 | rb->pcm_calculate_peaks(&left, &right); | ||
382 | lua_pushinteger(L, left); | ||
383 | lua_pushinteger(L, right); | ||
384 | return 2; | ||
385 | case PCM_SETFREQUENCY: | ||
386 | rb->pcm_set_frequency((unsigned int) luaL_checkint(L, 1)); | ||
387 | break; | ||
388 | case PCM_GETBYTESWAITING: | ||
389 | byteswait = rb->pcm_get_bytes_waiting(); | ||
390 | lua_pushinteger(L, byteswait); | ||
391 | break; | ||
392 | } | ||
393 | |||
394 | rb->yield(); | ||
395 | return 1; | ||
396 | } | ||
397 | #endif /*CONFIG_CODEC == SWCODEC*/ | ||
398 | |||
337 | SIMPLE_VOID_WRAPPER(backlight_force_on); | 399 | SIMPLE_VOID_WRAPPER(backlight_force_on); |
338 | SIMPLE_VOID_WRAPPER(backlight_use_settings); | 400 | SIMPLE_VOID_WRAPPER(backlight_use_settings); |
339 | 401 | ||
@@ -458,7 +520,9 @@ static const luaL_Reg rocklib[] = | |||
458 | 520 | ||
459 | RB_FUNC(audio), | 521 | RB_FUNC(audio), |
460 | RB_FUNC(playlist), | 522 | RB_FUNC(playlist), |
461 | 523 | #if CONFIG_CODEC == SWCODEC | |
524 | RB_FUNC(pcm), | ||
525 | #endif | ||
462 | {NULL, NULL} | 526 | {NULL, NULL} |
463 | }; | 527 | }; |
464 | #undef RB_FUNC | 528 | #undef RB_FUNC |
diff --git a/apps/plugins/lua/rocklib_aux.pl b/apps/plugins/lua/rocklib_aux.pl index d16351ac77..f52c64e98b 100755 --- a/apps/plugins/lua/rocklib_aux.pl +++ b/apps/plugins/lua/rocklib_aux.pl | |||
@@ -88,6 +88,10 @@ my @forbidden_functions = ('^open$', | |||
88 | '^playlist_(amount|add|create|start|resume|shuffle)$', | 88 | '^playlist_(amount|add|create|start|resume|shuffle)$', |
89 | '^playlist_(sync|resume_track|remove_all_tracks)$', | 89 | '^playlist_(sync|resume_track|remove_all_tracks)$', |
90 | '^playlist_(insert_track|insert_directory)$', | 90 | '^playlist_(insert_track|insert_directory)$', |
91 | '^pcm_is_(playing|paused)$', | ||
92 | '^pcm_play_(stop|pause|lock|unlock)$', | ||
93 | '^pcm_(apply_settings|get_bytes_waiting)$', | ||
94 | '^pcm_(set_frequency|calculate_peaks)$', | ||
91 | '^round_value_to_list32$'); | 95 | '^round_value_to_list32$'); |
92 | 96 | ||
93 | my $rocklib = sprintf("%s/rocklib.c", $ARGV[0]); | 97 | my $rocklib = sprintf("%s/rocklib.c", $ARGV[0]); |