diff --git a/drivers/modem/modem_receiver.c b/drivers/modem/modem_receiver.c index 1a26cb696ec..d7799566125 100644 --- a/drivers/modem/modem_receiver.c +++ b/drivers/modem/modem_receiver.c @@ -193,6 +193,25 @@ int mdm_receiver_send(struct mdm_receiver_context *ctx, return 0; } +int mdm_receiver_sleep(struct mdm_receiver_context *ctx) +{ + uart_irq_rx_disable(ctx->uart_dev); +#ifdef DEVICE_PM_LOW_POWER_STATE + device_set_power_state(ctx->uart_dev, DEVICE_PM_LOW_POWER_STATE, NULL, NULL); +#endif + return 0; +} + +int mdm_receiver_wake(struct mdm_receiver_context *ctx) +{ +#ifdef DEVICE_PM_LOW_POWER_STATE + device_set_power_state(ctx->uart_dev, DEVICE_PM_ACTIVE_STATE, NULL, NULL); +#endif + uart_irq_rx_enable(ctx->uart_dev); + + return 0; +} + int mdm_receiver_register(struct mdm_receiver_context *ctx, const char *uart_dev_name, u8_t *buf, size_t size) diff --git a/drivers/modem/modem_receiver.h b/drivers/modem/modem_receiver.h index 73a02075e8f..2820b568a80 100644 --- a/drivers/modem/modem_receiver.h +++ b/drivers/modem/modem_receiver.h @@ -86,6 +86,10 @@ int mdm_receiver_register(struct mdm_receiver_context *ctx, const char *uart_dev_name, u8_t *buf, size_t size); +int mdm_receiver_sleep(struct mdm_receiver_context *ctx); + +int mdm_receiver_wake(struct mdm_receiver_context *ctx); + #ifdef __cplusplus } #endif