Welcome to mirror list, hosted at ThFree Co, Russian Federation.

vibro.c « examples « applications - github.com/ClusterM/flipperzero-firmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 51b9fae3f5e23f2bf9cf8bf8f448a34bf3b2948f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "flipper_v2.h"

typedef struct {
    GpioPin* led;
    GpioPin* vibro;
} Ctx;

static void button_handler(const void* value, void* _ctx) {
    const InputEvent* event = value;
    Ctx* ctx = (Ctx*)_ctx;

    if(event->input == InputOk) {
        gpio_write(ctx->vibro, event->state);
        gpio_write(ctx->led, !event->state);
    }
}

void application_vibro(void* p) {
    Ctx ctx = {.led = (GpioPin*)&led_gpio[1], .vibro = (GpioPin*)&vibro_gpio};

    gpio_init(ctx.led, GpioModeOutputOpenDrain);
    gpio_init(ctx.vibro, GpioModeOutputPushPull);
    gpio_write(ctx.led, true);
    gpio_write(ctx.vibro, false);

    // subscribe on buttons
    PubSub* event_record = furi_open("input_events");
    furi_check(event_record);
    subscribe_pubsub(event_record, button_handler, &ctx);

    while(1) {
        osDelay(osWaitForever);
    }
}