2014-12-30 3 views
0

Я разработал Watchapp с Pebble.js, который извлекает удаленный файл, содержащий целое число, и испускает множество «коротких» событий Vibe.Пользовательская последовательность Vibe в Pebble.js?

Беда в том, что события Vibe не происходят, если они в данный момент находятся в процессе. Я прибег к чему-то вроде этого, чтобы попытаться распространить их (где BUMP_COUNT_INT == число Vibes испускать):

for (var i = 0; i < BUMP_COUNT_INT; i++) { 
     setTimeout(function(){ 
     Vibe.vibrate('short'); 
    }, 900*i); 

Однако даже 900ms (* Vibes) не соответствует. Между ними иногда бывает больше или меньше места, и они иногда сливаются (вызывая меньше Vibes, чем ожидалось).

Похоже, что SD SDK способен выполнять пользовательские последовательности.

Я надеялся, что кто-то столкнулся с более чистым обходным путем или более стабильным способом снять это с помощью Pebble.js ...?

Должен ли я просто согласиться с тем, что мне придется распространять Vibes еще дальше, если я хочу продолжить работу с Pebble.js?

Что вы хотите сделать?

ответ

3

Пользовательские шаблоны недоступны в Pebble.js, но вы можете легко добавить новый «тип» vibe в Pebble.js и реализовать его как пользовательский шаблон на стороне C Pebble.js.

шаги будут:

  1. Clone проект Pebble.js на GitHub и получить локальную копию. Вам нужно будет download and install the Pebble SDK, чтобы скомпилировать его локально на вашем компьютере (это не будет работать на CloudPebble).

  2. Объявляется новый тип команды Vibe in src/js/ui/simply-pebble.js (библиотеке Pebble.js JavaScript):

    var vibeTypes = [ 
        'short', 
        'long', 
        'double', 
        'custom' 
    ]; 
    
    var VibeType = makeArrayType(vibeTypes); 
    
  3. Создать новый тип Vibe в src/simply/simply_msg.c

    enum VibeType { 
        VibeShort = 0, 
        VibeLong = 1, 
        VibeDouble = 2, 
        VibeCustom = 3, 
    }; 
    
  4. А потом продлить Vibe для поддержки этого нового типа vibe в src/simply/simply_msg.c

    static void handle_vibe_packet(Simply *simply, Packet *data) { 
        VibePacket *packet = (VibePacket*) data; 
        switch (packet->type) { 
        case VibeShort: vibes_short_pulse(); break; 
        case VibeLong: vibes_break_pulse(); break; 
        case VibeDouble: vibes_double_pulse(); break; 
        case VibeCustom: 
         static const uint32_t const segments[] = { 200, 100, 400 }; 
         VibePattern pat = { 
         .durations = segments, 
         .num_segments = ARRAY_LENGTH(segments), 
         }; 
         vibes_enqueue_custom_pattern(pat); 
         break; 
        } 
    } 
    

Лучшим решением было бы предложить патч, чтобы любой пользовательский шаблон мог быть разработан на стороне JavaScript и отправлен на часы.

+0

БОЛЬШАЯ идея, и спасибо за понимание библиотеки C. Я избегал этого, но, похоже, мне придется копать в любом случае. БЛАГОДАРЯ! –

Смежные вопросы