drivers/rn2xx3: cleanup sleep function
This commit is contained in:
parent
02ae803acc
commit
76267bdfea
@ -260,22 +260,14 @@ int rn2xx3_mac_init(rn2xx3_t *dev);
|
||||
int rn2xx3_write_cmd(rn2xx3_t *dev);
|
||||
|
||||
/**
|
||||
* @brief Writes a command to the RN2XX3 device but don't wait for timeout
|
||||
* @brief Writes a command to the RN2XX3 device but don't wait for timeout or response
|
||||
*
|
||||
* The module will immediately reply with a meaningful message if the command
|
||||
* is valid or not.
|
||||
* The response can be checked in the `dev->resp_buf` buffer after a small delay
|
||||
* (for example 1ms).
|
||||
*
|
||||
* @param[in] dev RN2XX3 device descriptor
|
||||
*
|
||||
* @return RN2XX3_OK on success
|
||||
* @return RN2XX3_ERR_INVALID_PARAM if command is invalid
|
||||
* @return RN2XX3_ERR_NOT_JOINED if network is not joined
|
||||
* @return RN2XX3_ERR_NO_FREE_CH if no free channel
|
||||
* @return RN2XX3_ERR_SILENT if device is in Silent state
|
||||
* @return RN2XX3_ERR_FR_CNT_REJOIN_NEEDED if frame counter rolled over
|
||||
* @return RN2XX3_ERR_BUSY if MAC is not in Idle state
|
||||
* @return RN2XX3_ERR_INVALID_DATA_LENGTH if payload is too large
|
||||
* @return RN2XX3_ERR_KEYS_NOT_INIT if keys are not configured
|
||||
*/
|
||||
int rn2xx3_write_cmd_no_wait(rn2xx3_t *dev);
|
||||
|
||||
|
||||
@ -222,9 +222,23 @@ int rn2xx3_sys_factory_reset(rn2xx3_t *dev)
|
||||
int rn2xx3_sys_sleep(rn2xx3_t *dev)
|
||||
{
|
||||
size_t p = snprintf(dev->cmd_buf, sizeof(dev->cmd_buf) - 1,
|
||||
"sys sleep %lu", (unsigned long)dev->sleep);
|
||||
"sys sleep %" PRIu32 "", dev->sleep);
|
||||
dev->cmd_buf[p] = 0;
|
||||
if (rn2xx3_write_cmd_no_wait(dev) == RN2XX3_ERR_INVALID_PARAM) {
|
||||
|
||||
if (dev->int_state == RN2XX3_INT_STATE_SLEEP) {
|
||||
DEBUG("[rn2xx3] sleep: device already in sleep mode\n");
|
||||
return RN2XX3_ERR_SLEEP_MODE;
|
||||
}
|
||||
|
||||
/* always succeeds */
|
||||
rn2xx3_write_cmd_no_wait(dev);
|
||||
|
||||
/* Wait a little to check if the device could go to sleep. No answer means
|
||||
it worked. */
|
||||
xtimer_usleep(US_PER_MS);
|
||||
|
||||
DEBUG("[rn2xx3] RESP: %s\n", dev->resp_buf);
|
||||
if (rn2xx3_process_response(dev) == RN2XX3_ERR_INVALID_PARAM) {
|
||||
DEBUG("[rn2xx3] sleep: cannot put module in sleep mode\n");
|
||||
return RN2XX3_ERR_INVALID_PARAM;
|
||||
}
|
||||
|
||||
@ -178,22 +178,14 @@ int rn2xx3_write_cmd(rn2xx3_t *dev)
|
||||
|
||||
int rn2xx3_write_cmd_no_wait(rn2xx3_t *dev)
|
||||
{
|
||||
DEBUG("[rn2xx3] CMD: %s\n", dev->cmd_buf);
|
||||
|
||||
if (dev->int_state == RN2XX3_INT_STATE_SLEEP) {
|
||||
DEBUG("[rn2xx3] ABORT: device is in sleep mode\n");
|
||||
return RN2XX3_ERR_SLEEP_MODE;
|
||||
}
|
||||
DEBUG("[rn2xx3] CMD (NO WAIT): %s\n", dev->cmd_buf);
|
||||
|
||||
mutex_lock(&(dev->cmd_lock));
|
||||
_uart_write_str(dev, dev->cmd_buf);
|
||||
_uart_write_str(dev, closing_seq);
|
||||
|
||||
DEBUG("[rn2xx3] RET: %s\n", dev->resp_buf);
|
||||
|
||||
mutex_unlock(&(dev->cmd_lock));
|
||||
|
||||
return rn2xx3_process_response(dev);
|
||||
return RN2XX3_OK;
|
||||
}
|
||||
|
||||
int rn2xx3_wait_response(rn2xx3_t *dev)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user