fix OTA blinky pattern
This commit is contained in:
29
src/boards.c
29
src/boards.c
@ -81,7 +81,7 @@ void board_init(void)
|
||||
led_off(LED_BLUE);
|
||||
|
||||
// use PMW0 for LED RED
|
||||
led_pwm_init(NRF_PWM0, LED_RED);
|
||||
led_pwm_init(LED_RED);
|
||||
|
||||
// Init scheduler
|
||||
APP_SCHED_INIT(SCHED_MAX_EVENT_DATA_SIZE, SCHED_QUEUE_SIZE);
|
||||
@ -93,7 +93,7 @@ void board_init(void)
|
||||
void board_teardown(void)
|
||||
{
|
||||
// Disable and reset PWM for LED
|
||||
led_pwm_teardown(NRF_PWM0);
|
||||
led_pwm_teardown(LED_RED);
|
||||
|
||||
led_off(LED_BLUE);
|
||||
led_off(LED_RED);
|
||||
@ -115,8 +115,10 @@ uint32_t tusb_hal_millis(void)
|
||||
|
||||
|
||||
|
||||
void led_pwm_init(NRF_PWM_Type* pwm, uint32_t led_pin)
|
||||
void led_pwm_init(uint32_t led_pin)
|
||||
{
|
||||
NRF_PWM_Type* pwm = (led_pin == LED_RED) ? NRF_PWM0 : NRF_PWM1;
|
||||
|
||||
pwm->MODE = PWM_MODE_UPDOWN_UpAndDown;
|
||||
pwm->COUNTERTOP = PWM_MAXCOUNT;
|
||||
pwm->PRESCALER = PWM_PRESCALER_PRESCALER_DIV_128;
|
||||
@ -134,8 +136,10 @@ void led_pwm_init(NRF_PWM_Type* pwm, uint32_t led_pin)
|
||||
pwm->TASKS_SEQSTART[0] = 1;
|
||||
}
|
||||
|
||||
void led_pwm_teardown(NRF_PWM_Type* pwm)
|
||||
void led_pwm_teardown(uint32_t led_pin)
|
||||
{
|
||||
NRF_PWM_Type* pwm = (led_pin == LED_RED) ? NRF_PWM0 : NRF_PWM1;
|
||||
|
||||
pwm->TASKS_SEQSTART[0] = 0;
|
||||
pwm->ENABLE = 0;
|
||||
|
||||
@ -150,12 +154,23 @@ void led_pwm_teardown(NRF_PWM_Type* pwm)
|
||||
pwm->SEQ[0].CNT = 0;
|
||||
}
|
||||
|
||||
void led_pwm_solid(uint32_t led_pin, bool solid)
|
||||
void led_pwm_disable(uint32_t led_pin)
|
||||
{
|
||||
uint16_t* seq = ((led_pin == LED_RED) ? _pwm_red_seq : _pwm_blue_seq);
|
||||
seq[0] = (solid ? PWM_MAXCOUNT : PWM_MAXCOUNT/2);
|
||||
NRF_PWM_Type* pwm = (led_pin == LED_RED) ? NRF_PWM0 : NRF_PWM1;
|
||||
|
||||
pwm->TASKS_SEQSTART[0] = 0;
|
||||
pwm->ENABLE = 0;
|
||||
}
|
||||
|
||||
void led_pwm_enable(uint32_t led_pin)
|
||||
{
|
||||
NRF_PWM_Type* pwm = (led_pin == LED_RED) ? NRF_PWM0 : NRF_PWM1;
|
||||
|
||||
pwm->ENABLE = 1;
|
||||
pwm->TASKS_SEQSTART[0] = 1;
|
||||
}
|
||||
|
||||
|
||||
void led_blink_fast(bool enable)
|
||||
{
|
||||
if ( enable )
|
||||
|
@ -64,9 +64,10 @@ static inline void led_off(uint32_t pin)
|
||||
led_control(pin, false);
|
||||
}
|
||||
|
||||
void led_pwm_init(NRF_PWM_Type* pwm, uint32_t led_pin);
|
||||
void led_pwm_teardown(NRF_PWM_Type* pwm);
|
||||
void led_pwm_solid(uint32_t led_pin, bool solid);
|
||||
void led_pwm_init(uint32_t led_pin);
|
||||
void led_pwm_teardown(uint32_t led_pin);
|
||||
void led_pwm_disable(uint32_t led_pin);
|
||||
void led_pwm_enable(uint32_t led_pin);
|
||||
|
||||
void led_blink_fast(bool enable);
|
||||
|
||||
|
@ -179,7 +179,7 @@ int main(void)
|
||||
if ( _ota_dfu )
|
||||
{
|
||||
// Enable BLE if in OTA
|
||||
led_pwm_init(NRF_PWM1, LED_BLUE);
|
||||
led_pwm_init(LED_BLUE);
|
||||
|
||||
softdev_init(!sd_inited);
|
||||
sd_inited = true;
|
||||
@ -195,7 +195,7 @@ int main(void)
|
||||
|
||||
if ( _ota_dfu )
|
||||
{
|
||||
led_pwm_teardown(NRF_PWM1);
|
||||
led_pwm_teardown(LED_BLUE);
|
||||
led_off(LED_BLUE);
|
||||
|
||||
sd_softdevice_disable();
|
||||
@ -375,12 +375,13 @@ uint32_t proc_ble(void)
|
||||
{
|
||||
case BLE_GAP_EVT_CONNECTED:
|
||||
_ota_connected = true;
|
||||
led_pwm_solid(LED_BLUE, true); // LED on
|
||||
led_pwm_disable(LED_BLUE);
|
||||
led_on(LED_BLUE);
|
||||
break;
|
||||
|
||||
case BLE_GAP_EVT_DISCONNECTED:
|
||||
_ota_connected = false;
|
||||
led_pwm_solid(LED_BLUE, false); // LED Blink
|
||||
led_pwm_enable(LED_BLUE); // LED Blink
|
||||
break;
|
||||
|
||||
default: break;
|
||||
|
Reference in New Issue
Block a user