Allow the caller to access the entire content of CMDSTA
When sending a command to the CC13xx/CC25xx RF core, we wait for command completion by checking the LSB of CMDSTA (correctly so). However, in doing so we also zero out the 3 CMDSTA return bytes. For some commands, those bytes contain useful information (e.g. an RSSI value) and are required by the caller. This problem manifests itself e.g. in PROP mode `channel_clear()`, whereby the caller will always see an RSSI value of 0. This pull therefore fixes the logic in `rf_core_send_cmd()` to check for command completion by blocking on the CMDSTA result byte without zeroing out the 3 return bytes. Fixes #1465
This commit is contained in:
parent
9a5682b75b
commit
d42b1b50e5
@ -160,7 +160,7 @@ rf_core_send_cmd(uint32_t cmd, uint32_t *status)
|
||||
|
||||
HWREG(RFC_DBELL_BASE + RFC_DBELL_O_CMDR) = cmd;
|
||||
do {
|
||||
*status = HWREG(RFC_DBELL_BASE + RFC_DBELL_O_CMDSTA) & 0xFF;
|
||||
*status = HWREG(RFC_DBELL_BASE + RFC_DBELL_O_CMDSTA);
|
||||
if(++timeout_count > 50000) {
|
||||
PRINTF("rf_core_send_cmd: 0x%08lx Timeout\n", cmd);
|
||||
if(!interrupts_disabled) {
|
||||
@ -168,7 +168,7 @@ rf_core_send_cmd(uint32_t cmd, uint32_t *status)
|
||||
}
|
||||
return RF_CORE_CMD_ERROR;
|
||||
}
|
||||
} while(*status == RF_CORE_CMDSTA_PENDING);
|
||||
} while((*status & RF_CORE_CMDSTA_RESULT_MASK) == RF_CORE_CMDSTA_PENDING);
|
||||
|
||||
if(!interrupts_disabled) {
|
||||
ti_lib_int_master_enable();
|
||||
|
Loading…
Reference in New Issue
Block a user