static void select_click_handler(ClickRecognizerRef recognizer, void *context) { text_layer_set_text(text_layer, "Wobble up"); uint32_t segments[40]; VibePatternPWM pwmPat = { .durations = segments, .num_segments = 0, //pulseCount*2, }; // demonstrate use of vibesPatternPWM_addpulse vibesPatternPWM_addpulse(&pwmPat, 300, 1); vibesPatternPWM_addpulse(&pwmPat, 300, 6); vibesPatternPWM_addpulse(&pwmPat, 300, 2); vibesPatternPWM_addpulse(&pwmPat, 300, 7); vibesPatternPWM_addpulse(&pwmPat, 300, 3); vibesPatternPWM_addpulse(&pwmPat, 300, 8); vibesPatternPWM_addpulse(&pwmPat, 300, 4); vibesPatternPWM_addpulse(&pwmPat, 300, 9); vibesPatternPWM_addpulse(&pwmPat, 300, 5); vibesPatternPWM_addpulse(&pwmPat, 300, 10); vibes_enqueue_custom_pwm_pattern(&pwmPat); } static void up_click_handler(ClickRecognizerRef recognizer, void *context) { text_layer_set_text(text_layer, "Ramp up"); // demonstrate a straightforward vibration ramp static uint32_t segments[] = { 300, 1, 300, 2, 300, 3, 300, 4, 300, 5, 300, 6, 300, 7, 300, 8, 300, 9, 300, 10 }; //static uint32_t segments[] = { 100, 2, 1000, 0, 100, 10, 1000, 0, 100, 2, 1000, 0, 100, 10, 1000, 0, 100, 2 }; VibePatternPWM pwmPat = { .durations = segments, .num_segments = ARRAY_LENGTH(segments), }; //Could just call vibes_enqueue_custom_pwm_pattern, //but will instead do it in two steps - prepare and play: vibes_prepare_custom_pwm_pattern(&pwmPat); //Note this will not cause it to actually vibrate! vibes_play_current_custom_pwm_pattern(); //Now it actually plays the pattern that was "prepared" }
/* * Sends PWM pattern to standard Pebble SDK vibes_enqueue_custom_pattern */ bool vibes_enqueue_custom_pwm_pattern(VibePatternPWM *pwmPat) { bool isFull = vibes_prepare_custom_pwm_pattern(pwmPat); vibes_play_current_custom_pwm_pattern(); return isFull; }