From 44dda8f30750d0cb2915e9cfadec4798caf88e0c Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Tue, 17 Feb 2015 16:08:29 +0100 Subject: hhd70: reading state works now --- software/avr.lib/cc1101.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'software/avr.lib/cc1101.c') diff --git a/software/avr.lib/cc1101.c b/software/avr.lib/cc1101.c index 833adff..e846551 100644 --- a/software/avr.lib/cc1101.c +++ b/software/avr.lib/cc1101.c @@ -123,6 +123,62 @@ void cc1101_idle(void) cc1101_spi_strobe_command(CC1101_CMD_SIDLE); } +char* cc1101_state_to_string(cc1101_state_t state) +{ + switch(state) { + case sleep: return "sleep"; + case idle: return "idle"; + case xoff: return "xoff"; + case mancal: return "mancal"; + case fs_wakeup: return "fs_wakeup"; + case calibrate: return "calibrate"; + case settling: return "settling"; + case rx: return "rx"; + case txrx_settling: return "txrx_settling"; + case rxfifo_overflow: return "rxfifo_overflow"; + case fstxon: return "fstxon"; + case tx: return "tx"; + case rxtx_settling: return "rxtx_settling"; + case txfifo_underflow: return "txfifo_underflow"; + default: return "unknown"; + } +} + +static cc1101_state_t cc1101_marcstate_to_state(uint8_t marcstate) +{ + switch(marcstate) { + case CC1101_MARCSTATE_SLEEP: return sleep; + case CC1101_MARCSTATE_IDLE: return idle; + case CC1101_MARCSTATE_XOFF: return xoff; + case CC1101_MARCSTATE_VCOON_MC: + case CC1101_MARCSTATE_REGON_MC: + case CC1101_MARCSTATE_MANCAL: return mancal; + case CC1101_MARCSTATE_VCOON: + case CC1101_MARCSTATE_REGON: return fs_wakeup; + case CC1101_MARCSTATE_STARTCAL: return calibrate; + case CC1101_MARCSTATE_BWBOOST: + case CC1101_MARCSTATE_FS_LOCK: + case CC1101_MARCSTATE_IFADCON: return settling; + case CC1101_MARCSTATE_ENDCAL: return calibrate; + case CC1101_MARCSTATE_RX: + case CC1101_MARCSTATE_RX_END: + case CC1101_MARCSTATE_RX_RST: return rx; + case CC1101_MARCSTATE_TXRX_SWITCH: return txrx_settling; + case CC1101_MARCSTATE_RXFIFO_OVERFLOW: return rxfifo_overflow; + case CC1101_MARCSTATE_FSTXON: return fstxon; + case CC1101_MARCSTATE_TX: + case CC1101_MARCSTATE_TX_END: return tx; + case CC1101_MARCSTATE_RXTX_SWITCH: return rxtx_settling; + case CC1101_MARCSTATE_TXFIFO_UNDERFLOW: return txfifo_underflow; + default: return unknown; + } +} + +cc1101_state_t cc1101_get_state(void) +{ + return cc1101_marcstate_to_state(cc1101_spi_read_register(CC1101_REG_RO_MARCSTATE)); +} + void cc1101_set_freq_hz(uint32_t hz) { uint32_t freq = (uint32_t)((float)hz / drv.freq_corr); -- cgit v1.2.3