const int32_t *src, int32_t *des, int32_t count)
{
int i;
- UZURA_VOLUME_INPUT(p).left = 0;
- UZURA_VOLUME_INPUT(p).right = 0;
- UZURA_VOLUME_OUTPUT(p).left = 0;
- UZURA_VOLUME_OUTPUT(p).right = 0;
+ UZURA_LEVEL_INPUT(p).left = 0;
+ UZURA_LEVEL_INPUT(p).right = 0;
+ UZURA_LEVEL_OUTPUT(p).left = 0;
+ UZURA_LEVEL_OUTPUT(p).right = 0;
for (i = 0; i < count; i+=2) {
*(des + i + 0) = *(src + i + 0);
*(des + i + 1) = *(src + i + 1);
- UZURA_VOLUME_INPUT(p).left += abs(*(src + i + 0)) >> 1;
- UZURA_VOLUME_INPUT(p).right += abs(*(src + i + 1)) >> 1;
- UZURA_VOLUME_OUTPUT(p).left += abs(*(des + i + 0)) >> 1;
- UZURA_VOLUME_OUTPUT(p).right += abs(*(des + i + 1)) >> 1;
+ UZURA_LEVEL_INPUT(p).left += abs(*(src + i + 0)) >> 1;
+ UZURA_LEVEL_INPUT(p).right += abs(*(src + i + 1)) >> 1;
+ UZURA_LEVEL_OUTPUT(p).left += abs(*(des + i + 0)) >> 1;
+ UZURA_LEVEL_OUTPUT(p).right += abs(*(des + i + 1)) >> 1;
}
}
const int32_t *src, int32_t *des, int32_t count)
{
int i;
- UZURA_VOLUME_INPUT(p).left = 0;
- UZURA_VOLUME_INPUT(p).right = 0;
- UZURA_VOLUME_OUTPUT(p).left = 0;
- UZURA_VOLUME_OUTPUT(p).right = 0;
+ UZURA_LEVEL_INPUT(p).left = 0;
+ UZURA_LEVEL_INPUT(p).right = 0;
+ UZURA_LEVEL_OUTPUT(p).left = 0;
+ UZURA_LEVEL_OUTPUT(p).right = 0;
for (i = 0; i < count; i+=2) {
*(des + i + 0) = *(src + i + 0) - *(src + i + 1);
*(des + i + 1) = *(src + i + 0) - *(src + i + 1);
- UZURA_VOLUME_INPUT(p).left += abs(*(src + i + 0)) >> 1;
- UZURA_VOLUME_INPUT(p).right += abs(*(src + i + 1)) >> 1;
- UZURA_VOLUME_OUTPUT(p).left += abs(*(des + i + 0)) >> 1;
- UZURA_VOLUME_OUTPUT(p).right += abs(*(des + i + 1)) >> 1;
+ UZURA_LEVEL_INPUT(p).left += abs(*(src + i + 0)) >> 1;
+ UZURA_LEVEL_INPUT(p).right += abs(*(src + i + 1)) >> 1;
+ UZURA_LEVEL_OUTPUT(p).left += abs(*(des + i + 0)) >> 1;
+ UZURA_LEVEL_OUTPUT(p).right += abs(*(des + i + 1)) >> 1;
}
}
void system_default(UZURA *p)
{
lcd_goto(0, 0);
- lcd_putc(0x08 + (UZURA_VOLUME_INPUT(p).left >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_INPUT(p).right >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_OUTPUT(p).left >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_OUTPUT(p).right >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_INPUT(p).left >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_INPUT(p).right >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_OUTPUT(p).left >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_OUTPUT(p).right >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_INPUT(p).left >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_INPUT(p).right >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_OUTPUT(p).left >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_OUTPUT(p).right >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_INPUT(p).left >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_INPUT(p).right >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_OUTPUT(p).left >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_OUTPUT(p).right >> 29));
}
const int32_t *src, int32_t *des, int32_t count);
typedef void (*UZURA_SYSTEM_FUNC)(UZURA *p);
-#define UZURA_VOLUME_INPUT(P) ((P)->input)
-#define UZURA_VOLUME_OUTPUT(P) ((P)->input)
+#define UZURA_LEVEL_INPUT(P) ((P)->input)
+#define UZURA_LEVEL_OUTPUT(P) ((P)->output)
#define UZURA_USER_DATA(P) ((P)->user_data)
/**
typedef struct {
uint32_t left; /**< Left. */
uint32_t right; /**< Right. */
-} volume_t;
+} level_t;
struct UZURA {
UZURA_EFFECT_FUNC effect; /**< Effect callback. */
UZURA_SYSTEM_FUNC system; /**< System callback. */
- volume_t input; /**< Input volume. */
- volume_t output; /**< Output volume. */
+ level_t input; /**< Input volume. */
+ level_t output; /**< Output volume. */
void *user_data; /**< User external object. */
};
static void rotenc_callback(RotencAction action, void *extobj)
{
+ static int lotdiv = 0;
+
work_t *w = (work_t *)extobj;
if (RotencActionPush == action) {
w->effect = !w->effect;
}
}
if (RotencActionLeft == action) {
- w->locate_target-=8;
- if (w->locate_target < 0) {
- w->locate_target = 0;
+ if (lotdiv < -4) {
+ w->locate_target-=8;
+ if (w->locate_target < 0) {
+ w->locate_target = 0;
+ }
+ lotdiv = 0;
+ } else {
+ lotdiv--;
}
}
if (RotencActionRight == action) {
- w->locate_target+=8;
- if (32 < w->locate_target) {
- w->locate_target = 32;
+ if (4 < lotdiv) {
+ w->locate_target+=8;
+ if (32 < w->locate_target) {
+ w->locate_target = 32;
+ }
+ lotdiv = 0;
+ } else {
+ lotdiv++;
}
}
}
work_t *w = (work_t *)UZURA_USER_DATA(p);
lcd_goto(0, 0);
- lcd_putc(0x08 + (UZURA_VOLUME_INPUT(p).left >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_INPUT(p).right >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_OUTPUT(p).left >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_OUTPUT(p).right >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_INPUT(p).left >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_INPUT(p).right >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_OUTPUT(p).left >> 29));
- lcd_putc(0x08 + (UZURA_VOLUME_OUTPUT(p).right >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_INPUT(p).left >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_INPUT(p).right >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_OUTPUT(p).left >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_OUTPUT(p).right >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_INPUT(p).left >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_INPUT(p).right >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_OUTPUT(p).left >> 29));
+ lcd_putc(0x08 + (UZURA_LEVEL_OUTPUT(p).right >> 29));
#define SCROLL_SPEED (16)
static uint8_t divcnt = 0;