diff options
Diffstat (limited to 'usr/space_light/src')
| -rw-r--r-- | usr/space_light/src/device.c | 5 | ||||
| -rw-r--r-- | usr/space_light/src/space_light.c | 79 |
2 files changed, 19 insertions, 65 deletions
diff --git a/usr/space_light/src/device.c b/usr/space_light/src/device.c index 8b87879..7aa5caf 100644 --- a/usr/space_light/src/device.c +++ b/usr/space_light/src/device.c @@ -197,10 +197,7 @@ static void ble_write_callback(write_req_t *write_req) { return; } uint16_t seconds = write_req->value[1] << 8 | write_req->value[2]; - set_timer(seconds); - break; - case 0xFF: - setPWM(&write_req->value[1], write_req->len - 1); + set_timer((uint32_t)seconds); break; default: break; diff --git a/usr/space_light/src/space_light.c b/usr/space_light/src/space_light.c index 82e4e1f..85c5243 100644 --- a/usr/space_light/src/space_light.c +++ b/usr/space_light/src/space_light.c @@ -195,73 +195,30 @@ void set_rgbcw(struct RGBCW *rgbcw) { bk_pwm_update_param(WARM, pwm_period, m_period); } -static void oneShotTimerCallback(TimerHandle_t xTimer) { power_save_mode(); } +static void oneShotTimerCallback(TimerHandle_t xTimer) { + bk_printf("TIMER CALLBACK called\r\n"); + power_save_mode(); +} -void set_timer(uint16_t seconds) { - // FIXME: restructure the code - if (xOneShotTimer == NULL && seconds == 0) { - return; - } - if (seconds == 0) { - xTimerStop(xOneShotTimer, 0); +void set_timer(uint32_t seconds) { + bk_printf("seconds %u\r\n", seconds); + if (xOneShotTimer != NULL) { + bk_printf("Delete timer because we want to reconfigure it\r\n"); + xTimerDelete(xOneShotTimer, 0); + xOneShotTimer = NULL; } - if (xOneShotTimer == NULL) { - xOneShotTimer = xTimerCreate("OneShot", seconds * 1000, pdFALSE, 0, - oneShotTimerCallback); - } - if ((xOneShotTimer != NULL)) { - xTimerStart(xOneShotTimer, 0); + if (seconds == 0) { + return; } -} -// Complete hacky command which will be removed shortly -// this is just to shorten the developemnt cycle -void setPWM(uint8_t *values, size_t len) { - // at least try something ^^ + uint32_t ticks = pdMS_TO_TICKS(seconds * 1000); + bk_printf("timer to ticks: %u\r\n", ticks); + xOneShotTimer = + xTimerCreate("OneShotTimer", ticks, pdFALSE, 0, oneShotTimerCallback); - switch (values[0]) { - case 0x01: // initialzie - { - if (len < 6) { - return; - } - uint8_t pwm = values[1]; - uint16_t frequency = values[2] << 8 | values[3]; - uint16_t duty = values[4] << 8 | values[5]; - bk_pwm_initialize(pwm, frequency, duty); - break; - } - case 0x02: // start - { - if (len < 2) { - return; - } - uint8_t pwm = values[1]; - bk_pwm_start(pwm); - break; - } - case 0x03: // stop - { - if (len < 2) { - return; - } - uint8_t pwm = values[1]; - bk_pwm_stop(pwm); - break; - } - case 0x04: // update param - { - if (len < 6) { - return; - } - uint8_t pwm = values[1]; - uint16_t frequency = values[2] << 8 | values[3]; - uint16_t duty = values[4] << 8 | values[5]; - bk_pwm_update_param(pwm, frequency, duty); - } - default: - return; + if (xOneShotTimer != NULL) { + xTimerStart(xOneShotTimer, 0); } } |
