3D Low Frequency Wakeup Receiver
AS3933.h
- Committer:
- mcm
- Date:
- 2018-03-07
- Revision:
- 1:944583d4b1de
- Parent:
- 0:19b363e50103
- Child:
- 3:2de552c4ffbc
File content as of revision 1:944583d4b1de:
/** * @brief AS3933.h * @details 3D Low Frequency Wakeup Receiver. * Header file. * * * @return N/A * * @author Manuel Caballero * @date 7/March/2018 * @version 7/March/2018 The ORIGIN * @pre N/A. * @warning N/A * @pre This code belongs to Nimbus Centre ( http://unbarquero.blogspot.com ). */ #ifndef AS3933_H #define AS3933_H #include "mbed.h" /** Example: [TODO] */ /*! Library for the AS3933 3D Low Frequency Wakeup Receiver. */ class AS3933 { public: /* SPI COMMAND STRUCTURE */ /** * @brief MODE. ( B15:B14 ) */ typedef enum { AS3933_WRITE = ( 0x00 << 6 ), /*!< WRITE */ AS3933_READ = ( 0x01 << 6 ), /*!< READ */ AS3933_DIRECT_COMMAND = ( 0x03 << 6 ) /*!< DIRECT COMMAND */ } AS3933_spi_command_structure_mode_t; /** * @brief READ/WRITE REGISTER ( B13:B8 ) */ typedef enum { AS3933_R0 = 0x00, /*!< R0 register */ AS3933_R1 = 0x01, /*!< R1 register */ AS3933_R2 = 0x02, /*!< R3 register */ AS3933_R3 = 0x03, /*!< R4 register */ AS3933_R4 = 0x04, /*!< R5 register */ AS3933_R5 = 0x05, /*!< R6 register */ AS3933_R6 = 0x06, /*!< R7 register */ AS3933_R7 = 0x07, /*!< R8 register */ AS3933_R8 = 0x08, /*!< R9 register */ AS3933_R9 = 0x09, /*!< R10 register */ AS3933_R10 = 0x0A, /*!< R11 register */ AS3933_R11 = 0x0B, /*!< R11 register */ AS3933_R12 = 0x0C, /*!< R12 register */ AS3933_R13 = 0x0D, /*!< R13 register */ AS3933_R14 = 0x0E, /*!< R14 register */ AS3933_R15 = 0x0F, /*!< R15 register */ AS3933_R16 = 0x10, /*!< R16 register */ AS3933_R17 = 0x11, /*!< R17 register */ AS3933_R18 = 0x12, /*!< R18 register */ AS3933_R19 = 0x13 /*!< R19 register */ } AS3933_spi_command_structure_registers_t; /* SPI DIRECT COMMANDS */ /** * @brief DIRECT COMMANDS. ( B13:B8 ) */ typedef enum { CLEAR_WAKE = 0x00, /*!< Clears the wake state of the chip. In case the chip has woken up ( WAKE pin is high ) the chip is set back to listening mode */ RESET_RSSI = 0x01, /*!< Resets the RSSI measurement */ CALIB_RC_OSC = 0x02, /*!< Starts the trimming procedure of the internal RC oscillator */ CLEAR_FALSE = 0x03, /*!< Resets the false wakeup register ( R13 = 00 ) */ PRESET_DEFAULT = 0x04, /*!< Sets all register in the default mode */ CALIB_RCO_LC = 0x05 /*!< Calibration of the RC-oscillator with the external LC tank */ } AS3933_spi_direct_commands_t; /* R0 REGISTER. COMMANDS */ /** * @brief PATT32 ( R0<7> ). Pattern extended to 32 bits * * NOTE: Default value: PATT32_16_BITS */ typedef enum { PATT32_MASK = ( 1 << 7 ), /*!< PATT32 mask */ PATT32_16_BITS = ( 0 << 7 ), /*!< 16-bits pattern extended */ PATT32_32_BITS = ( 1 << 7 ) /*!< 32-bits pattern extended */ } AS3933_r0_patt32_value_t; /** * @brief DAT_MASK ( R0<6> ). Masks data on DAT pin before wakeup happens * * NOTE: Default value: DAT_MASK_DISABLED */ typedef enum { DAT_MASK_MASK = ( 1 << 6 ), /*!< DAT_MASK mask */ DAT_MASK_DISABLED = ( 0 << 6 ), /*!< Data is not masked on DAT pin */ DAT_MASK_ENABLED = ( 1 << 6 ) /*!< Data is masked on DAT pin */ } AS3933_r0_dat_mask_value_t; /** * @brief ON_OFF ( R0<5> ). On/Off operation mode. ( Duty-cycle defined in the register R4<7:6> ) * * NOTE: Default value: ON_OFF_DISABLED */ typedef enum { ON_OFF_MASK = ( 1 << 5 ), /*!< ON_OFF mask */ ON_OFF_DISABLED = ( 0 << 5 ), /*!< ON_OFF is disabled */ ON_OFF_ENABLED = ( 1 << 5 ) /*!< ON_OFF is enabled */ } AS3933_r0_on_off_value_t; /** * @brief MUX_123 ( R0<4> ). Scan mode enable * * NOTE: Default value: MUX_123_DISABLED */ typedef enum { MUX_123_MASK = ( 1 << 4 ), /*!< MUX_123 mask */ MUX_123_DISABLED = ( 0 << 4 ), /*!< Scan mode enable is disabled */ MUX_123_ENABLED = ( 1 << 4 ) /*!< Scan mode enable is enabled */ } AS3933_r0_mux_123_value_t; /** * @brief EN_A2 ( R0<3> ). Channel 2 enable * * NOTE: Default value: EN_A2_ENABLED */ typedef enum { EN_A2_MASK = ( 1 << 3 ), /*!< EN_A2 mask */ EN_A2_DISABLED = ( 0 << 3 ), /*!< Channel 2 is disabled */ EN_A2_ENABLED = ( 1 << 3 ) /*!< Channel 2 is enabled */ } AS3933_r0_en_a2_value_t; /** * @brief EN_A3 ( R0<2> ). Channel 3 enable * * NOTE: Default value: EN_A3_ENABLED */ typedef enum { EN_A3_MASK = ( 1 << 2 ), /*!< EN_A3 mask */ EN_A3_DISABLED = ( 0 << 2 ), /*!< Channel 3 is disabled */ EN_A3_ENABLED = ( 1 << 2 ) /*!< Channel 3 is enabled */ } AS3933_r0_en_a3_value_t; /** * @brief EN_A1 ( R0<1> ). Channel 1 enable * * NOTE: Default value: EN_A1_ENABLED */ typedef enum { EN_A1_MASK = ( 1 << 1 ), /*!< EN_A1 mask */ EN_A1_DISABLED = ( 0 << 1 ), /*!< Channel 1 is disabled */ EN_A1_ENABLED = ( 1 << 1 ) /*!< Channel 1 is enabled */ } AS3933_r0_en_a1_value_t; /* R1 REGISTER. COMMANDS */ /** * @brief ABS_HY ( R1<7> ). Enable Data slicer absolute reference * * NOTE: Default value: ABS_HY_DISABLED */ typedef enum { ABS_HY_MASK = ( 1 << 7 ), /*!< ABS_HY mask */ ABS_HY_DISABLED = ( 0 << 7 ), /*!< Data slicer absolute reference is disabled */ ABS_HY_ENABLED = ( 1 << 7 ) /*!< Data slicer absolute reference is enabled */ } AS3933_r1_abs_hy_value_t; /** * @brief AGC_TLIM ( R1<6> ). AGC acting only on the first carrier burst * * NOTE: Default value: AGC_TLIM_DISABLED */ typedef enum { AGC_TLIM_MASK = ( 1 << 6 ), /*!< AGC_TLIM mask */ AGC_TLIM_DISABLED = ( 0 << 6 ), /*!< AGC is disabled */ AGC_TLIM_ENABLED = ( 1 << 6 ) /*!< AGC is enabled */ } AS3933_r1_agc_tlim_value_t; /** * @brief AGC_UD ( R1<5> ). AGC operating in both direction (up-down) * * NOTE: Default value: AGC_UD_UP_DOWN_MODE */ typedef enum { AGC_UD_MASK = ( 1 << 5 ), /*!< AGC_UD mask */ AGC_UD_DOWN_MODE = ( 0 << 5 ), /*!< AGC down mode only */ AGC_UD_UP_DOWN_MODE = ( 1 << 5 ) /*!< AGC up and down mode */ } AS3933_r1_agc_ud_value_t; /** * @brief ATT_ON ( R1<4> ). Antenna damper enable * * NOTE: Default value: ATT_ON_DISABLED */ typedef enum { ATT_ON_MASK = ( 1 << 4 ), /*!< ATT_ON mask */ ATT_ON_DISABLED = ( 0 << 4 ), /*!< Antenna damper disabled */ ATT_ON_ENABLED = ( 1 << 4 ) /*!< Antenna damper enabled */ } AS3933_r1_att_on_value_t; /** * @brief EN_MANCH ( R1<3> ). Manchester decoder enable * * NOTE: Default value: EN_MANCH_DISABLED */ typedef enum { EN_MANCH_MASK = ( 1 << 3 ), /*!< EN_MANCH mask */ EN_MANCH_DISABLED = ( 0 << 3 ), /*!< Manchester decoder disabled */ EN_MANCH_ENABLED = ( 1 << 3 ) /*!< Manchester decoder enabled */ } AS3933_r1_en_manch_value_t; /** * @brief EN_PAT2 ( R1<2> ). Double wakeup pattern correlation * * NOTE: Default value: EN_PAT2_DISABLED */ typedef enum { EN_PAT2_MASK = ( 1 << 2 ), /*!< EN_PAT2 mask */ EN_PAT2_DISABLED = ( 0 << 2 ), /*!< Double wakeup pattern correlation disabled */ EN_PAT2_ENABLED = ( 1 << 2 ) /*!< Double wakeup pattern correlation enabled */ } AS3933_r1_en_pat2_value_t; /** * @brief EN_WPAT ( R1<1> ). Correlator enable * * NOTE: Default value: EN_WPAT_ENABLED */ typedef enum { EN_WPAT_MASK = ( 1 << 1 ), /*!< EN_WPAT mask */ EN_WPAT_DISABLED = ( 0 << 1 ), /*!< Correlator disabled */ EN_WPAT_ENABLED = ( 1 << 1 ) /*!< Correlator enabled */ } AS3933_r1_en_wpat_value_t; /** * @brief EN_XTAL ( R1<0> ). Crystal oscillator enable * * NOTE: Default value: EN_XTAL_ENABLED */ typedef enum { EN_XTAL_MASK = ( 1 << 0 ), /*!< EN_XTAL mask */ EN_XTAL_DISABLED = ( 0 << 0 ), /*!< Crystal oscillator disabled */ EN_XTAL_ENABLED = ( 1 << 0 ) /*!< Crystal oscillator enabled */ } AS3933_r1_en_xtal_value_t; /* R2 REGISTER. COMMANDS */ /** * @brief S_ABSH ( R2<7> ). Data slicer absolute threshold reduction * * NOTE: Default value: S_ABSH_DISABLED */ typedef enum { S_ABSH_MASK = ( 1 << 7 ), /*!< S_ABSH mask */ S_ABSH_DISABLED = ( 0 << 7 ), /*!< Data slicer absolute threshold reduction is disabled */ S_ABSH_ENABLED = ( 1 << 7 ) /*!< Data slicer absolute threshold reduction is enabled */ } AS3933_r2_s_absh_value_t; /** * @brief EN_EXT_CLK ( R2<6> ). Enables external clock generator * * NOTE: Default value: EN_EXT_CLK_DISABLED */ typedef enum { EN_EXT_CLK_MASK = ( 1 << 6 ), /*!< EN_EXT_CLK mask */ EN_EXT_CLK_DISABLED = ( 0 << 6 ), /*!< Enables external clock generator is disabled */ EN_EXT_CLK_ENABLED = ( 1 << 6 ) /*!< Enables external clock generator is enabled */ } AS3933_r2_en_ext_clk_value_t; /** * @brief G_BOOST ( R2<5> ). +3dB Amplifier Gain Boost * * NOTE: Default value: G_BOOST_DISABLED */ typedef enum { G_BOOST_MASK = ( 1 << 5 ), /*!< G_BOOST mask */ G_BOOST_DISABLED = ( 0 << 5 ), /*!< Gain Boost is disabled */ G_BOOST_ENABLED = ( 1 << 5 ) /*!< Gain Boost is enabled */ } AS3933_r2_g_boost_value_t; /** * @brief S_WU1 ( R2<1:0> ). Tolerance setting for the stage wakeup ( 20 to 150 kHz ) * * NOTE: Default value: S_WU1_20_150_KHZ_TOLERANCE_16_3 */ typedef enum { S_WU1_20_150_KHZ_MASK = ( 0b11 << 0 ), /*!< S_WU1 mask ( 20 to 150 kHz ) */ S_WU1_20_150_KHZ_TOLERANCE_16_3 = ( 0b00 << 0 ), /*!< M = 8 +/- 3 */ S_WU1_20_150_KHZ_TOLERANCE_16_2 = ( 0b01 << 0 ), /*!< M = 8 +/- 2 */ S_WU1_20_150_KHZ_TOLERANCE_16_1 = ( 0b10 << 0 ) /*!< M = 8 +/- 1 */ } AS3933_r2_s_wu1_20_150_khz_value_t; /** * @brief S_WU1 ( R2<1:0> ). Tolerance setting for the stage wakeup ( 15 to 20 kHz ) * * NOTE: Default value: S_WU1_15_20_KHZ_TOLERANCE_8_3 */ typedef enum { S_WU1_15_20_KHZ_MASK = ( 0b11 << 0 ), /*!< S_WU1 mask ( 15 to 20 kHz ) */ S_WU1_15_20_KHZ_TOLERANCE_8_3 = ( 0b00 << 0 ), /*!< M = 8 +/- 3 */ S_WU1_15_20_KHZ_TOLERANCE_8_2 = ( 0b01 << 0 ), /*!< M = 8 +/- 2 */ S_WU1_15_20_KHZ_TOLERANCE_8_1 = ( 0b10 << 0 ) /*!< M = 8 +/- 1 */ } AS3933_r2_s_wu1_15_20_khz_value_t; /* R3 REGISTER. COMMANDS */ /** * @brief HY_20m ( R3<7> ). Data slicer hysteresis * * NOTE: Default value: HY_20M_COMPARATOR_HYSTERESIS_40MV */ typedef enum { HY_20M_MASK = ( 1 << 7 ), /*!< HY_20m mask */ HY_20M_COMPARATOR_HYSTERESIS_40MV = ( 0 << 7 ), /*!< Comparator hysteresis = 40mV */ HY_20M_COMPARATOR_HYSTERESIS_20MV = ( 1 << 7 ) /*!< Comparator hysteresis = 20mV */ } AS3933_r3_hy_20m_value_t; /** * @brief HY_POS ( R3<6> ). Data slicer hysteresis * * NOTE: Default value: HY_POS_HYSTERESIS_POSITIVE_EDGES */ typedef enum { HY_POS_MASK = ( 1 << 6 ), /*!< HY_POS mask */ HY_POS_HYSTERESIS_POSITIVE_EDGES = ( 0 << 6 ), /*!< Hysteresis only positive edges */ HY_POS_HYSTERESIS_BOTH_EDGES = ( 1 << 6 ) /*!< Hysteresis positive and negative edges */ } AS3933_r3_hy_pos_value_t; /** * @brief FS_SCL ( R3<3:5> ). Data slices time constant * * NOTE: Default value: FS_SCL_PREAMBLE_LENGTH_2_3 */ typedef enum { FS_SCL_MASK = ( 0b111 << 3 ), /*!< FS_SCL mask */ FS_SCL_PREAMBLE_LENGTH_0_8 = ( 0b000 << 3 ), /*!< Minimum Preamble Length: 0.8ms */ FS_SCL_PREAMBLE_LENGTH_1_15 = ( 0b001 << 3 ), /*!< Minimum Preamble Length: 1.15ms */ FS_SCL_PREAMBLE_LENGTH_1_55 = ( 0b010 << 3 ), /*!< Minimum Preamble Length: 1.55ms */ FS_SCL_PREAMBLE_LENGTH_1_9 = ( 0b011 << 3 ), /*!< Minimum Preamble Length: 1.9ms */ FS_SCL_PREAMBLE_LENGTH_2_3 = ( 0b100 << 3 ), /*!< Minimum Preamble Length: 2.3ms */ FS_SCL_PREAMBLE_LENGTH_2_65 = ( 0b101 << 3 ), /*!< Minimum Preamble Length: 2.65ms */ FS_SCL_PREAMBLE_LENGTH_3 = ( 0b110 << 3 ), /*!< Minimum Preamble Length: 3ms */ FS_SCL_PREAMBLE_LENGTH_3_5 = ( 0b111 << 3 ) /*!< Minimum Preamble Length: 3.5ms */ } AS3933_r3_fs_scl_value_t; /** * @brief FS_ENV ( R3<2:0> ). Envelop detector time constant * * NOTE: Default value: FS_ENV_SYMBOL_RATE_4096 */ typedef enum { FS_ENV_MASK = ( 0b111 << 0 ), /*!< FS_ENV mask */ FS_ENV_SYMBOL_RATE_4096 = ( 0b000 << 0 ), /*!< Symbol Rate [Manchester symbol/s]: 4096 */ FS_ENV_SYMBOL_RATE_2184 = ( 0b001 << 0 ), /*!< Symbol Rate [Manchester symbol/s]: 2184 */ FS_ENV_SYMBOL_RATE_1490 = ( 0b010 << 0 ), /*!< Symbol Rate [Manchester symbol/s]: 1490 */ FS_ENV_SYMBOL_RATE_1130 = ( 0b011 << 0 ), /*!< Symbol Rate [Manchester symbol/s]: 1130 */ FS_ENV_SYMBOL_RATE_910 = ( 0b100 << 0 ), /*!< Symbol Rate [Manchester symbol/s]: 910 */ FS_ENV_SYMBOL_RATE_762 = ( 0b101 << 0 ), /*!< Symbol Rate [Manchester symbol/s]: 762 */ FS_ENV_SYMBOL_RATE_655 = ( 0b110 << 0 ), /*!< Symbol Rate [Manchester symbol/s]: 655 */ FS_ENV_SYMBOL_RATE_512 = ( 0b111 << 0 ) /*!< Symbol Rate [Manchester symbol/s]: 512 */ } AS3933_r3_fs_env_value_t; /* R4 REGISTER. COMMANDS */ /** * @brief T_OFF ( R4<7:6> ). Off time in ON/OFF operation mode * * NOTE: Default value: T_OFF_1_MS */ typedef enum { T_OFF_MASK = ( 0b11 << 6 ), /*!< T_OFF mask */ T_OFF_1_MS = ( 0b00 << 6 ), /*!< Off time: 1ms */ T_OFF_2_MS = ( 0b01 << 6 ), /*!< Off time: 2ms */ T_OFF_4_MS = ( 0b10 << 6 ), /*!< Off time: 4ms */ T_OFF_8_MS = ( 0b11 << 6 ) /*!< Off time: 8ms */ } AS3933_r4_t_off_value_t; /** * @brief D_RES ( R4<5:4> ). Antenna damping resistor ( Shunt Resistor ( parallel to the resonator at 125 kHz ) ) * * NOTE: Default value: D_RES_PARALLEL_SHUNT_RESISTOR_3_KOHM */ typedef enum { D_RES_MASK = ( 0b11 << 4 ), /*!< D_RES mask */ D_RES_PARALLEL_SHUNT_RESISTOR_1_KOHM = ( 0b00 << 4 ), /*!< Shunt Resistor: 1kOhm */ D_RES_PARALLEL_SHUNT_RESISTOR_3_KOHM = ( 0b01 << 4 ), /*!< Shunt Resistor: 3kOhm */ D_RES_PARALLEL_SHUNT_RESISTOR_9_KOHM = ( 0b10 << 4 ), /*!< Shunt Resistor: 9kOhm */ D_RES_PARALLEL_SHUNT_RESISTOR_27_KOHM = ( 0b11 << 4 ) /*!< Shunt Resistor: 27kOhm */ } AS3933_r4_d_res_value_t; /** * @brief GR ( R4<3:0> ). Gain reduction * * NOTE: Default value: GR_GAIN_REDUCTION_NO_GAIN_REDUCTION */ typedef enum { GR_MASK = ( 0b1111 << 0 ), /*!< GR mask */ GR_GAIN_REDUCTION_NO_GAIN_REDUCTION = ( 0b0000 << 0 ), /*!< No Gain Reduction */ GR_GAIN_REDUCTION_MINUS_4_DB = ( 0b0100 << 0 ), /*!< Gain Reduction: -4dB */ GR_GAIN_REDUCTION_MINUS_8_DB = ( 0b0110 << 0 ), /*!< Gain Reduction: -8dB */ GR_GAIN_REDUCTION_MINUS_12_DB = ( 0b1000 << 0 ), /*!< Gain Reduction: -12dB */ GR_GAIN_REDUCTION_MINUS_16_DB = ( 0b1010 << 0 ), /*!< Gain Reduction: -16dB */ GR_GAIN_REDUCTION_MINUS_20_DB = ( 0b1100 << 0 ), /*!< Gain Reduction: -20dB */ GR_GAIN_REDUCTION_MINUS_24_DB = ( 0b1110 << 0 ) /*!< Gain Reduction: -24dB */ } AS3933_r4_gr_value_t; /* R5 REGISTER. COMMANDS */ /** * @brief TS2 ( R5<7:0> ). 2nd Byte of wakeup pattern * * NOTE: Default value: TS2_WAKEUP_PATTERN_MSB */ typedef enum { TS2_PATT2B_MASK = ( 0xFF << 0 ), /*!< TS2 mask */ TS2_WAKEUP_PATTERN_PATT2B = ( 0b01101001 << 0 ) /*!< Default value */ } AS3933_r5_ts2_value_t; /* R6 REGISTER. COMMANDS */ /** * @brief TS1 ( R6<7:0> ). 1st Byte of wakeup pattern * * NOTE: Default value: TS1_WAKEUP_PATTERN_LSB */ typedef enum { TS1_PATT1B_MASK = ( 0xFF << 0 ), /*!< TS1 mask */ TS1_WAKEUP_PATTERN_PATT1B = ( 0b10010110 << 0 ) /*!< Default value */ } AS3933_r6_ts2_value_t; /* R7 REGISTER. COMMANDS */ /** * @brief T_OUT ( R7<7:5> ). Automatic time-out * * NOTE: Default value: T_OUT_0_SEC */ typedef enum { T_OUT_MASK = ( 0b111 << 5 ), /*!< T_OUT mask */ T_OUT_0_SEC = ( 0b000 << 5 ), /*!< Timeout: 0sec */ T_OUT_50_MSEC = ( 0b001 << 5 ), /*!< Timeout: 50msec */ T_OUT_100_MSEC = ( 0b010 << 5 ), /*!< Timeout: 100mecs */ T_OUT_150_MSEC = ( 0b011 << 5 ), /*!< Timeout: 150msec */ T_OUT_200_MSEC = ( 0b100 << 5 ), /*!< Timeout: 200msec */ T_OUT_250_MSEC = ( 0b101 << 5 ), /*!< Timeout: 250msec */ T_OUT_300_MSEC = ( 0b110 << 5 ), /*!< Timeout: 300msec */ T_OUT_350_MSEC = ( 0b111 << 5 ) /*!< Timeout: 350msec */ } AS3933_r7_t_out_value_t; /** * @brief T_HBIT ( R7<4:0> ). Bit rate definition * * NOTE: Default value: T_HBIT_BIT_RATE_12 */ typedef enum { T_HBIT_MASK = ( 0b11111 << 0 ), /*!< T_HBIT mask */ T_HBIT_BIT_RATE_4 = ( 0b00011 << 0 ), /*!< Bit Duration in Clock Generator Periods: 4 */ T_HBIT_BIT_RATE_5 = ( 0b00100 << 0 ), /*!< Bit Duration in Clock Generator Periods: 5 */ T_HBIT_BIT_RATE_6 = ( 0b00101 << 0 ), /*!< Bit Duration in Clock Generator Periods: 6 */ T_HBIT_BIT_RATE_7 = ( 0b00110 << 0 ), /*!< Bit Duration in Clock Generator Periods: 7 */ T_HBIT_BIT_RATE_8 = ( 0b00111 << 0 ), /*!< Bit Duration in Clock Generator Periods: 8 */ T_HBIT_BIT_RATE_9 = ( 0b01000 << 0 ), /*!< Bit Duration in Clock Generator Periods: 9 */ T_HBIT_BIT_RATE_10 = ( 0b01001 << 0 ), /*!< Bit Duration in Clock Generator Periods: 10 */ T_HBIT_BIT_RATE_11 = ( 0b01010 << 0 ), /*!< Bit Duration in Clock Generator Periods: 11 */ T_HBIT_BIT_RATE_12 = ( 0b01011 << 0 ), /*!< Bit Duration in Clock Generator Periods: 12 */ T_HBIT_BIT_RATE_13 = ( 0b01100 << 0 ), /*!< Bit Duration in Clock Generator Periods: 13 */ T_HBIT_BIT_RATE_14 = ( 0b01101 << 0 ), /*!< Bit Duration in Clock Generator Periods: 14 */ T_HBIT_BIT_RATE_15 = ( 0b01110 << 0 ), /*!< Bit Duration in Clock Generator Periods: 15 */ T_HBIT_BIT_RATE_16 = ( 0b01111 << 0 ), /*!< Bit Duration in Clock Generator Periods: 16 */ T_HBIT_BIT_RATE_17 = ( 0b10000 << 0 ), /*!< Bit Duration in Clock Generator Periods: 17 */ T_HBIT_BIT_RATE_18 = ( 0b10001 << 0 ), /*!< Bit Duration in Clock Generator Periods: 18 */ T_HBIT_BIT_RATE_19 = ( 0b10010 << 0 ), /*!< Bit Duration in Clock Generator Periods: 19 */ T_HBIT_BIT_RATE_20 = ( 0b10011 << 0 ), /*!< Bit Duration in Clock Generator Periods: 20 */ T_HBIT_BIT_RATE_21 = ( 0b10100 << 0 ), /*!< Bit Duration in Clock Generator Periods: 21 */ T_HBIT_BIT_RATE_22 = ( 0b10101 << 0 ), /*!< Bit Duration in Clock Generator Periods: 22 */ T_HBIT_BIT_RATE_23 = ( 0b10110 << 0 ), /*!< Bit Duration in Clock Generator Periods: 23 */ T_HBIT_BIT_RATE_24 = ( 0b10111 << 0 ), /*!< Bit Duration in Clock Generator Periods: 24 */ T_HBIT_BIT_RATE_25 = ( 0b11000 << 0 ), /*!< Bit Duration in Clock Generator Periods: 25 */ T_HBIT_BIT_RATE_26 = ( 0b11001 << 0 ), /*!< Bit Duration in Clock Generator Periods: 26 */ T_HBIT_BIT_RATE_27 = ( 0b11010 << 0 ), /*!< Bit Duration in Clock Generator Periods: 27 */ T_HBIT_BIT_RATE_28 = ( 0b11011 << 0 ), /*!< Bit Duration in Clock Generator Periods: 28 */ T_HBIT_BIT_RATE_29 = ( 0b11100 << 0 ), /*!< Bit Duration in Clock Generator Periods: 29 */ T_HBIT_BIT_RATE_30 = ( 0b11101 << 0 ), /*!< Bit Duration in Clock Generator Periods: 30 */ T_HBIT_BIT_RATE_31 = ( 0b11110 << 0 ), /*!< Bit Duration in Clock Generator Periods: 31 */ T_HBIT_BIT_RATE_32 = ( 0b11111 << 0 ) /*!< Bit Duration in Clock Generator Periods: 32 */ } AS3933_r7_t_hbit_value_t; /* R8 REGISTER. COMMANDS */ /** * @brief BAND_SEL ( R8<7:5> ). Band selection * * NOTE: Default value: BAND_SEL_RANGE_95_150_KHZ */ typedef enum { BAND_SEL_MASK = ( 0b111 << 5 ), /*!< BAND_SEL mask */ BAND_SEL_RANGE_95_150_KHZ = ( 0b000 << 5 ), /*!< N = 4, Operating Frequency Range [kHz]: 95-150 */ BAND_SEL_RANGE_65_95_KHZ = ( 0b000 << 5 ), /*!< N = 6, Operating Frequency Range [kHz]: 65-95 */ BAND_SEL_RANGE_40_65_KHZ = ( 0b000 << 5 ), /*!< N = 10, Operating Frequency Range [kHz]: 40-65 */ BAND_SEL_RANGE_23_40_KHZ = ( 0b000 << 5 ), /*!< N = 18, Operating Frequency Range [kHz]: 23-40 */ BAND_SEL_RANGE_15_23_KHZ = ( 0b000 << 5 ) /*!< N = 14, Operating Frequency Range [kHz]: 15-23 */ } AS3933_r8_band_sel_value_t; /** * @brief T_AUTO ( R8<2:0> ). Artificial wake-up * * NOTE: Default value: T_AUTO_NO_ARTIFICIAL_WAKEUP */ typedef enum { T_AUTO_MASK = ( 0b111 << 0 ), /*!< T_AUTO mask */ T_AUTO_NO_ARTIFICIAL_WAKEUP = ( 0b000 << 0 ), /*!< No artificial wake-up */ T_AUTO_ARTIFICIAL_WAKEUP_1_SEC = ( 0b001 << 0 ), /*!< Artificial wake-up 1sec */ T_AUTO_ARTIFICIAL_WAKEUP_5_SEC = ( 0b010 << 0 ), /*!< Artificial wake-up 5sec */ T_AUTO_ARTIFICIAL_WAKEUP_20_SEC = ( 0b011 << 0 ), /*!< Artificial wake-up 20sec */ T_AUTO_ARTIFICIAL_WAKEUP_2_MIN = ( 0b100 << 0 ), /*!< Artificial wake-up 2min */ T_AUTO_ARTIFICIAL_WAKEUP_15_MIN = ( 0b101 << 0 ), /*!< Artificial wake-up 15min */ T_AUTO_ARTIFICIAL_WAKEUP_1_HOUR = ( 0b110 << 0 ), /*!< Artificial wake-up 1hour */ T_AUTO_ARTIFICIAL_WAKEUP_2_HOUR = ( 0b111 << 0 ), /*!< Artificial wake-up 2hour */ } AS3933_r8_t_auto_value_t; /* R9 REGISTER. COMMANDS */ /** * @brief BLOCK_AGC ( R9<7> ). Disables AGC * * NOTE: Default value: BLOCK_AGC_ENABLED */ typedef enum { BLOCK_AGC_MASK = ( 1 << 7 ), /*!< BLOCK_AGC mask */ BLOCK_AGC_DISABLED = ( 1 << 7 ), /*!< AGC is disabled */ BLOCK_AGC_ENABLED = ( 0 << 7 ) /*!< AGC is enabled */ } AS3933_r9_block_agc_value_t; /* R10 REGISTER. COMMANDS */ /** * @brief RSSI1 ( R10<4:0> ). RSSI channel 1 * */ typedef enum { RSSI1_MASK = ( 0b11111 << 0 ) /*!< RSSI1 mask */ } AS3933_r10_rssi1_value_t; /* R11 REGISTER. COMMANDS */ /** * @brief RSSI3 ( R11<4:0> ). RSSI channel 3 * */ typedef enum { RSSI3_MASK = ( 0b11111 << 0 ) /*!< RSSI3 mask */ } AS3933_r11_rssi3_value_t; /* R12 REGISTER. COMMANDS */ /** * @brief RSSI2 ( R11<4:0> ). RSSI channel 2 * */ typedef enum { RSSI2_MASK = ( 0b11111 << 0 ) /*!< RSSI2 mask */ } AS3933_r11_rssi2_value_t; /* R14 REGISTER. COMMANDS */ /** * @brief RC_CAL_KO ( R14<7> ). Unsuccessful RC calibration * */ typedef enum { RC_CAL_KO_MASK = ( 1 << 7 ), /*!< RC_CAL_KO mask */ RC_CAL_KO_HIGH = ( 1 << 7 ), /*!< RC_CAL_KO Unsuccessful RC calibration */ RC_CAL_KO_LOW = ( 0 << 7 ) /*!< RC_CAL_KO Reset state */ } AS3933_r14_rc_cal_ko_value_t; /** * @brief RC_CAL_OK ( R14<6> ). Successful RC calibration * */ typedef enum { RC_CAL_OK_MASK = ( 1 << 6 ), /*!< RC_CAL_OK mask */ RC_CAL_OK_HIGH = ( 1 << 6 ), /*!< RC_CAL_OK Successful RC calibration */ RC_CAL_OK_LOW = ( 0 << 6 ) /*!< RC_CAL_OK Reset state */ } AS3933_r14_rc_cal_ok_value_t; /** * @brief RC_OSC_TAPS ( R14<5:0> ). RC-Oscillator taps setting * */ typedef enum { RC_OSC_TAPS_MASK = ( 0b111111 << 0 ) /*!< RC_OSC_TAPS mask */ } AS3933_r14_rc_osc_taps_value_t; /* R15 REGISTER. COMMANDS */ /** * @brief LC_OSC_KO ( R15<7> ). LC-Oscillator not working * */ typedef enum { LC_OSC_KO_MASK = ( 1 << 7 ), /*!< LC_OSC_KO mask */ LC_OSC_KO_HIGH = ( 1 << 7 ), /*!< LC-Oscillator not working */ LC_OSC_KO_LOW = ( 0 << 7 ) /*!< LC_OSC_KO Reset state */ } AS3933_r15_lc_osc_ko_value_t; /** * @brief LC_OSC_OK ( R15<6> ). LC-Oscillator working * */ typedef enum { LC_OSC_OK_MASK = ( 1 << 6 ), /*!< LC_OSC_OK mask */ LC_OSC_OK_HIGH = ( 1 << 6 ), /*!< LC_OSC_OK LC-Oscillator working */ LC_OSC_OK_LOW = ( 0 << 6 ) /*!< LC_OSC_OK Reset state */ } AS3933_r15_lc_osc_ok_value_t; /* R16 REGISTER. COMMANDS */ /** * @brief CLOCK_GEN_DIS ( R16<7> ). The Clock Generator output signal displayed on CL_DAT pin * * NOTE: Default value: CLOCK_GEN_DIS_DISABLED */ typedef enum { CLOCK_GEN_DIS_MASK = ( 1 << 7 ), /*!< CLOCK_GEN_DIS mask */ CLOCK_GEN_DIS_ENABLED = ( 1 << 7 ), /*!< CLOCK on CL_DAT pin */ CLOCK_GEN_DIS_DISABLED = ( 0 << 7 ) /*!< NO CLOCK on CL_DAT pin */ } AS3933_r16_clock_gen_dis_value_t; /** * @brief LC_OSC_DIS ( R16<6> ). The LC-oscillator output signal displayed on DAT pin * * NOTE: Default value: LC_OSC_DIS_DISABLED */ typedef enum { LC_OSC_DIS_MASK = ( 1 << 6 ), /*!< LC_OSC_DIS mask */ LC_OSC_DIS_ENABLED = ( 1 << 6 ), /*!< LC-CLOCK on CL_DAT pin */ LC_OSC_DIS_DISABLED = ( 0 << 6 ) /*!< NO LC-CLOCK on CL_DAT pin */ } AS3933_r16_lc_osc_dis_value_t; /** * @brief RC_OSC_MIN ( R16<5> ). Sets the RC-oscillator to minimum frequency * * NOTE: Default value: RC_OSC_MIN_DISABLED */ typedef enum { RC_OSC_MIN_MASK = ( 1 << 5 ), /*!< RC_OSC_MIN mask */ RC_OSC_MIN_ENABLED = ( 1 << 5 ), /*!< RC-oscillator to minimum frequency enabled */ RC_OSC_MIN_DISABLED = ( 0 << 5 ) /*!< RC-oscillator to minimum frequency disabled */ } AS3933_r16_rc_osc_min_value_t; /** * @brief RC_OSC_MIN ( R16<4> ). Sets the RC-oscillator to maximum frequency * * NOTE: Default value: RC_OSC_MAX_DISABLED */ typedef enum { RC_OSC_MAX_MASK = ( 1 << 4 ), /*!< RC_OSC_MAX mask */ RC_OSC_MAX_ENABLED = ( 1 << 4 ), /*!< RC-oscillator to maximum frequency enabled */ RC_OSC_MAX_DISABLED = ( 0 << 4 ) /*!< RC-oscillator to maximum frequency disabled */ } AS3933_r16_rc_osc_max_value_t; /** * @brief LC_OSC_MUX3 ( R16<2> ). Connects LF3P to the LCO * * NOTE: Default value: LC_OSC_MUX3_LF3P_AND_LCO_DISCONNECTED */ typedef enum { LC_OSC_MUX3_MASK = ( 1 << 2 ), /*!< LC_OSC_MUX3 mask */ LC_OSC_MUX3_LF3P_AND_LCO_CONNECTED = ( 1 << 2 ), /*!< LF3P and LCO connected */ LC_OSC_MUX3_LF3P_AND_LCO_DISCONNECTED = ( 0 << 2 ) /*!< LF3P and LCO disconnected */ } AS3933_r16_lc_osc_mux3_value_t; /** * @brief LC_OSC_MUX2 ( R16<1> ). Connects LF2P to the LCO * * NOTE: Default value: LC_OSC_MUX2_LF2P_AND_LCO_DISCONNECTED */ typedef enum { LC_OSC_MUX2_MASK = ( 1 << 1 ), /*!< LC_OSC_MUX2 mask */ LC_OSC_MUX2_LF2P_AND_LCO_CONNECTED = ( 1 << 1 ), /*!< LF2P and LCO connected */ LC_OSC_MUX2_LF2P_AND_LCO_DISCONNECTED = ( 0 << 1 ) /*!< LF2P and LCO disconnected */ } AS3933_r16_lc_osc_mux2_value_t; /** * @brief LC_OSC_MUX1 ( R16<0> ). Connects LF1P to the LCO * * NOTE: Default value: LC_OSC_MUX1_LF1P_AND_LCO_DISCONNECTED */ typedef enum { LC_OSC_MUX1_MASK = ( 1 << 0 ), /*!< LC_OSC_MUX1 mask */ LC_OSC_MUX1_LF1P_AND_LCO_CONNECTED = ( 1 << 0 ), /*!< LF1P and LCO connected */ LC_OSC_MUX1_LF1P_AND_LCO_DISCONNECTED = ( 0 << 0 ) /*!< LF1P and LCO disconnected */ } AS3933_r16_lc_osc_mux1_value_t; /* R17 REGISTER. COMMANDS */ /** * @brief CAPS_CH1 ( R17<4:0> ). Capacitor banks on the channel1 * * NOTE: Default value: CAPS_CH1_ADDS_NONE */ typedef enum { CAPS_CH1_MASK = ( 0b11111 << 0 ), /*!< CAPS_CH1 mask */ CAPS_CH1_ADDS_NONE = ( 0b00000 << 0 ), /*!< None to LF1P */ CAPS_CH1_ADDS_1PF = ( 0b00001 << 0 ), /*!< Adds 1pF to LF1P */ CAPS_CH1_ADDS_2PF = ( 0b00010 << 0 ), /*!< Adds 2pF to LF1P */ CAPS_CH1_ADDS_4PF = ( 0b00100 << 0 ), /*!< Adds 4pF to LF1P */ CAPS_CH1_ADDS_8PF = ( 0b01000 << 0 ), /*!< Adds 8pF to LF1P */ CAPS_CH1_ADDS_16PF = ( 0b10000 << 0 ) /*!< Adds 16pF to LF1P */ } AS3933_r17_caps_ch1_value_t; /* R18 REGISTER. COMMANDS */ /** * @brief CAPS_CH2 ( R18<4:0> ). Capacitor banks on the channel2 * * NOTE: Default value: CAPS_CH2_ADDS_NONE */ typedef enum { CAPS_CH2_MASK = ( 0b11111 << 0 ), /*!< CAPS_CH2 mask */ CAPS_CH2_ADDS_NONE = ( 0b00000 << 0 ), /*!< None to LF2P */ CAPS_CH2_ADDS_1PF = ( 0b00001 << 0 ), /*!< Adds 1pF to LF2P */ CAPS_CH2_ADDS_2PF = ( 0b00010 << 0 ), /*!< Adds 2pF to LF2P */ CAPS_CH2_ADDS_4PF = ( 0b00100 << 0 ), /*!< Adds 4pF to LF2P */ CAPS_CH2_ADDS_8PF = ( 0b01000 << 0 ), /*!< Adds 8pF to LF2P */ CAPS_CH2_ADDS_16PF = ( 0b10000 << 0 ) /*!< Adds 16pF to LF2P */ } AS3933_r18_caps_ch2_value_t; /* R19 REGISTER. COMMANDS */ /** * @brief CAPS_CH3 ( R19<4:0> ). Capacitor banks on the channel3 * * NOTE: Default value: CAPS_CH3_ADDS_NONE */ typedef enum { CAPS_CH3_MASK = ( 0b11111 << 0 ), /*!< CAPS_CH3 mask */ CAPS_CH3_ADDS_NONE = ( 0b00000 << 0 ), /*!< None to LF3P */ CAPS_CH3_ADDS_1PF = ( 0b00001 << 0 ), /*!< Adds 1pF to LF3P */ CAPS_CH3_ADDS_2PF = ( 0b00010 << 0 ), /*!< Adds 2pF to LF3P */ CAPS_CH3_ADDS_4PF = ( 0b00100 << 0 ), /*!< Adds 4pF to LF3P */ CAPS_CH3_ADDS_8PF = ( 0b01000 << 0 ), /*!< Adds 8pF to LF3P */ CAPS_CH3_ADDS_16PF = ( 0b10000 << 0 ) /*!< Adds 16pF to LF3P */ } AS3933_r19_caps_ch3_value_t; /* DRIVER COMMANDS */ /** * @brief CHANNEL ENABLED * * NOTE: p.14 8.1.1 Listening Mode */ typedef enum { AS3933_CH1_OFF_CH2_OFF_CH3_OFF = 0, /*!< All channels disabled */ AS3933_CH1_ON_CH2_OFF_CH3_OFF = 1, /*!< Channels 1 enabled */ AS3933_CH1_OFF_CH2_ON_CH3_OFF = 2, /*!< Channel 2 enabled */ AS3933_CH1_ON_CH2_ON_CH3_OFF = 3, /*!< Channels 1 and 2 enabled */ AS3933_CH1_OFF_CH2_OFF_CH3_ON = 4, /*!< Channel 3 enabled */ AS3933_CH1_ON_CH2_OFF_CH3_ON = 5, /*!< Channels 1 and 3 enabled */ AS3933_CH1_OFF_CH2_ON_CH3_ON = 6, /*!< Channels 2 and 3 enabled */ AS3933_CH1_ON_CH2_ON_CH3_ON = 7 /*!< All channels enabled */ } AS3933_channels_enable_t; /** * @brief LISTENING MODE ( LOW POWER MODE ) * * NOTE: p.14 8.1.1 Listening Mode */ typedef enum { AS3933_STANDARD_LISTENING_MODE = 0, /*!< All channels are active at the same time */ AS3933_SCANNING_MODE = 1, /*!< Low Power mode 1 */ AS3933_ON_OFF_MODE = 2 /*!< Low Power mode 2 */ } AS3933_scanning_mode_t; /** * @brief TOLERANCE SETTINGS * * NOTE: p.23 8.3.1 Frequency Detector / RSSI / Channel Selector * The tolerance depends on the frequency detection band. */ typedef enum { AS3933_TOLERANCE_MASK = ( 0b11 << 0 ), /*!< Tolerance mask */ AS3933_TOLERANCE_TIGHT = ( 0b00 << 0 ), AS3933_TOLERANCE_MEDIUM = ( 0b01 << 0 ), AS3933_TOLERANCE_RELAX = ( 0b10 << 0 ) } AS3933_tolerance_settings_t; /** * @brief CHANNELS ( Parallel Tuning Capacitance ) * */ typedef enum { AS3933_CHANNEL_LF1P = 0, /*!< Channel 1 */ AS3933_CHANNEL_LF2P = 1, /*!< Channel 2 */ AS3933_CHANNEL_LF3P = 2 /*!< Channel 3 */ } AS3933_parallel_tuning_channels_t; /** * @brief CAPACITANCE ( Parallel Tuning Capacitance ) * */ typedef enum { AS3933_CAPACITANCE_MASK = ( 0b11111 << 0 ), /*!< AS3933_CAPACITANCE mask */ AS3933_CAPACITANCE_ADDS_NONE = ( 0b00000 << 0 ), /*!< None to chosen channel */ AS3933_CAPACITANCE_ADDS_1PF = ( 0b00001 << 0 ), /*!< Adds 1pF to chosen channel */ AS3933_CAPACITANCE_ADDS_2PF = ( 0b00010 << 0 ), /*!< Adds 2pF to chosen channel */ AS3933_CAPACITANCE_ADDS_4PF = ( 0b00100 << 0 ), /*!< Adds 4pF to chosen channel */ AS3933_CAPACITANCE_ADDS_8PF = ( 0b01000 << 0 ), /*!< Adds 8pF to chosen channel */ AS3933_CAPACITANCE_ADDS_16PF = ( 0b10000 << 0 ) /*!< Adds 16pF to chosen channel */ } AS3933_parallel_tuning_capacitance_t; #ifndef AS3933_VECTOR_STRUCT_H #define AS3933_VECTOR_STRUCT_H /* AS3933 DATA */ typedef struct { int8_t f_wake; /*!< False wakeup register */ uint8_t patt2b; /*!< Wakeup pattern PATT2B ( Manchester ) */ uint8_t patt1b; /*!< Wakeup pattern PATT1B ( Manchester ) */ uint8_t rssi1; /*!< RSSI1 Channel 1 */ uint8_t rssi2; /*!< RSSI2 Channel 2 */ uint8_t rssi3; /*!< RSSI3 Channel 3 */ uint32_t data; /*!< Data */ } AS3933_data_t; #endif /** * @brief INTERNAL CONSTANTS */ typedef enum { AS3933_SUCCESS = 0, AS3933_FAILURE = 1, SPI_SUCCESS = 1 } AS3933_status_t; /** Create an AS3933 object connected to the specified SPI pins. * * @param mosi SPI Master Output Slave Input * @param miso SPI Master Input Slave Output * @param sclk SPI clock * @param cs SPI Chip Select * @param freq SPI frequency in Hz. */ AS3933 ( PinName mosi, PinName miso, PinName sclk, PinName cs, uint32_t freq ); /** Delete AS3933 object. */ ~AS3933(); /** It configures the low power mode. */ AS3933_status_t AS3933_SetLowPowerMode ( AS3933_channels_enable_t myEnabledChannels, AS3933_scanning_mode_t myLowPowerMode, AS3933_r4_t_off_value_t myT_Off ); /** It configures the artificial wakeup. */ AS3933_status_t AS3933_SetArtificialWakeUp ( AS3933_r8_t_auto_value_t myArtificialWakeUp ); /** It gets feedback on the surrounding environment reading the false wakeup register. */ AS3933_status_t AS3933_ReadFalseWakeUpRegister ( AS3933_data_t* myF_WAKE ); /** It configures the clock generator. */ AS3933_status_t AS3933_SetClockGenerator ( AS3933_r1_en_xtal_value_t myClockGenerator, AS3933_r16_clock_gen_dis_value_t myClockGeneratorOutputMode ); /** It calibrates RC oscillator ( Self Calibration only ). */ AS3933_status_t AS3933_CalibrateRC_Oscillator ( void ); /** It configures the antenna damper. */ AS3933_status_t AS3933_SetAntennaDamper ( AS3933_r1_att_on_value_t myAntennaDamperMode, AS3933_r4_d_res_value_t myShuntResistor ); /** It configures the envelop detector for different symbol rates. */ AS3933_status_t AS3933_SetEnvelopDetector ( AS3933_r3_fs_env_value_t mySymbolRates ); /** It configures the data slicer for different preamble length. */ AS3933_status_t AS3933_SetDataSlicer ( AS3933_r1_abs_hy_value_t myAbsoluteThresholdMode, AS3933_r3_fs_scl_value_t myMinimumPreambleLength ); /** It configures the hysteresis on the data slicer comparator. */ AS3933_status_t AS3933_SetComparatorHysteresis ( AS3933_r3_hy_pos_value_t myHysteresisMode, AS3933_r3_hy_20m_value_t myHysteresisRange ); /** It configures the gain reduction. */ AS3933_status_t AS3933_SetGainReduction ( AS3933_r4_gr_value_t myGainReductionValue ); /** It configures the operating frequency range. */ AS3933_status_t AS3933_SetOperatingFrequencyRange ( AS3933_r8_band_sel_value_t myOperatingFrequencyRange ); /** It configures the frequency detection tolerance. */ AS3933_status_t AS3933_SetFrequencyDetectionTolerance ( AS3933_tolerance_settings_t myTolerance ); /** It configures the +3dB gain boost. */ AS3933_status_t AS3933_SetGainBoost ( AS3933_r2_g_boost_value_t myGainBoostMode ); /** It configures the Automatic Gain Control ( AGC ). */ AS3933_status_t AS3933_SetAGC ( AS3933_r1_agc_tlim_value_t myAGC_CarrierBurstMode, AS3933_r1_agc_ud_value_t myAGC_OperatingDirection ); /** It configures the mask data before wakeup. */ AS3933_status_t AS3933_SetDataMask ( AS3933_r0_dat_mask_value_t myDataMaskMode ); /** It configures the correlator and the Manchester Decoder. */ AS3933_status_t AS3933_SetCorrelator ( AS3933_r1_en_wpat_value_t myCorrelatorMode, AS3933_r0_patt32_value_t mySymbolPattern, AS3933_r7_t_hbit_value_t myRate, AS3933_r1_en_manch_value_t myManchesterDecoderMode ); /** It sets the wakeup pattern ( Manchester ). */ AS3933_status_t AS3933_SetWakeUpPattern ( AS3933_data_t myWakeUpPattern ); /** It gets the wakeup pattern ( Manchester ). */ AS3933_status_t AS3933_GetWakeUpPattern ( AS3933_data_t* myWakeUpPattern ); /** It sets the automatic time-out setup. */ AS3933_status_t AS3933_SetAutomaticTimeOut ( AS3933_r7_t_out_value_t myAutomaticTimeOut ); /** It sets the parallel tuning capacitance on the chosen channel. */ AS3933_status_t AS3933_SetParallelTuningCapacitance ( AS3933_parallel_tuning_channels_t myChannel, AS3933_parallel_tuning_capacitance_t myAddedCapacitance ); /** It gets the RSSI for all channels. */ AS3933_status_t AS3933_GetRSSI ( AS3933_data_t* myChannelRSSI ); /** It sends a direct command */ AS3933_status_t AS3933_Send_DirectCommand ( AS3933_spi_direct_commands_t myDirectCommand ); private: SPI _spi; DigitalOut _cs; }; #endif