dtmf 2.1.0.0
dtmf.h File Reference

This file contains API for DTMF Click Driver. More...

#include "drv_digital_out.h"
#include "drv_digital_in.h"
#include "drv_spi_master.h"
#include "spi_specifics.h"

Go to the source code of this file.

Data Structures

struct  dtmf_t
 DTMF Click context object. More...
 
struct  dtmf_cfg_t
 DTMF Click configuration object. More...
 

Macros

#define DTMF_CMD_GENERAL_RESET   0x01
 DTMF description register.
 
#define DTMF_CMD_GENERAL_CONTROL   0xE0
 
#define DTMF_CMD_TRANSMIT_MODE   0xE1
 
#define DTMF_CMD_RECEIVE_MODE   0xE2
 
#define DTMF_CMD_TRANSMIT_DATA   0xE3
 
#define DTMF_CMD_RECEIVE_DATA   0xE5
 
#define DTMF_CMD_STATUS   0xE6
 
#define DTMF_CMD_PROGRAMMING   0xE8
 
#define DTMF_CONTROL_TXAN_OFF   0x8000u
 DTMF general control register setting.
 
#define DTMF_CONTROL_TXA_OFF   0x4000u
 
#define DTMF_CONTROL_LB   0x0800u
 
#define DTMF_CONTROL_EQU   0x0400u
 
#define DTMF_CONTROL_PWR   0x0100u
 
#define DTMF_CONTROL_RST   0x0080u
 
#define DTMF_CONTROL_IRQN_EN   0x0040u
 
#define DTMF_CONTROL_IRQ_PROG_FLAG   0x0010u
 
#define DTMF_CONTROL_IRQ_TX_RDY_UNF   0x0008u
 
#define DTMF_CONTROL_IRQ_ENERGY_RX_CP   0x0004u
 
#define DTMF_CONTROL_IRQ_CONT_10   0x0002u
 
#define DTMF_CONTROL_IRQ_RX_RDY_OVF   0x0001u
 
#define DTMF_CONTROL_IRQ_MASK   0x001Fu
 
#define DTMF_TX_MODE_V21_FSK_HIGH   0x9000u
 DTMF transmit mode register setting.
 
#define DTMF_TX_MODE_V21_FSK_LOW   0x8000u
 
#define DTMF_TX_MODE_BELL_103_FSK_HIGH   0x7000u
 
#define DTMF_TX_MODE_BELL_103_FSK_LOW   0x6000u
 
#define DTMF_TX_MODE_V23_FSK_1200   0x5000u
 
#define DTMF_TX_MODE_V23_FSK_75   0x4000u
 
#define DTMF_TX_MODE_BELL_202_FSK_1200   0x3000u
 
#define DTMF_TX_MODE_BELL_202_FSK_150   0x2000u
 
#define DTMF_TX_MODE_DTMF_TONES   0x1000u
 
#define DTMF_TX_MODE_DISABLED   0x0000u
 
#define DTMF_TX_MODE_MASK   0xF000u
 
#define DTMF_TX_LEVEL_0_DB   0x0E00u
 
#define DTMF_TX_LEVEL_MIN_1_5_DB   0x0C00u
 
#define DTMF_TX_LEVEL_MIN_3_DB   0x0A00u
 
#define DTMF_TX_LEVEL_MIN_4_5_DB   0x0800u
 
#define DTMF_TX_LEVEL_MIN_6_DB   0x0600u
 
#define DTMF_TX_LEVEL_MIN_7_5_DB   0x0400u
 
#define DTMF_TX_LEVEL_MIN_9_DB   0x0200u
 
#define DTMF_TX_LEVEL_MIN_10_5_DB   0x0000u
 
#define DTMF_TX_LEVEL_MASK   0x0E00u
 
#define DTMF_TX_DTMF_TWIST_2_DB   0x00E0u
 
#define DTMF_TX_DTMF_TWIST_1_DB   0x00C0u
 
#define DTMF_TX_DTMF_TWIST_1_5_DB   0x00A0u
 
#define DTMF_TX_DTMF_TWIST_2_5_DB   0x0080u
 
#define DTMF_TX_DTMF_TWIST_3_DB   0x0060u
 
#define DTMF_TX_DTMF_TWIST_3_5_DB   0x0040u
 
#define DTMF_TX_DTMF_TWIST_4_DB   0x0020u
 
#define DTMF_TX_DTMF_TWIST_4_5_DB   0x0000u
 
#define DTMF_TX_DTMF_TWIST_MASK   0x00E0u
 
#define DTMF_TX_DATA_FORMAT_SYNC   0x0018u
 
#define DTMF_TX_DATA_FORMAT_SS_NO_PAR   0x0010u
 
#define DTMF_TX_DATA_FORMAT_SS_EVEN_PAR   0x0008u
 
#define DTMF_TX_DATA_FORMAT_SS_ODD_PAR   0x0000u
 
#define DTMF_TX_DATA_FORMAT_MASK   0x0018u
 
#define DTMF_TX_DATA_STOP_8_2   0x0007u
 
#define DTMF_TX_DATA_STOP_8_1   0x0006u
 
#define DTMF_TX_DATA_STOP_7_2   0x0005u
 
#define DTMF_TX_DATA_STOP_7_1   0x0004u
 
#define DTMF_TX_DATA_STOP_6_2   0x0003u
 
#define DTMF_TX_DATA_STOP_6_1   0x0002u
 
#define DTMF_TX_DATA_STOP_5_2   0x0001u
 
#define DTMF_TX_DATA_STOP_5_1   0x0000u
 
#define DTMF_TX_DATA_STOP_MASK   0x0007u
 
#define DTMF_TX_DATA_SOURCE_TX_BUF   0x0004u
 
#define DTMF_TX_DATA_SOURCE_CONT_1S   0x0003u
 
#define DTMF_TX_DATA_SOURCE_CONT_0S   0x0002u
 
#define DTMF_TX_DATA_SOURCE_CONT_ALT   0x0000u
 
#define DTMF_TX_DATA_SOURCE_MASK   0x0007u
 
#define DTMF_TX_TONE_FIXED_NO_TONE   0x0000u
 
#define DTMF_TX_TONE_FIXED_PAIR_697   0x0001u
 
#define DTMF_TX_TONE_FIXED_PAIR_770   0x0002u
 
#define DTMF_TX_TONE_FIXED_PAIR_852   0x0003u
 
#define DTMF_TX_TONE_FIXED_PAIR_941   0x0004u
 
#define DTMF_TX_TONE_FIXED_PAIR_1209   0x0005u
 
#define DTMF_TX_TONE_FIXED_PAIR_1336   0x0006u
 
#define DTMF_TX_TONE_FIXED_PAIR_1477   0x0007u
 
#define DTMF_TX_TONE_FIXED_PAIR_1633   0x0008u
 
#define DTMF_TX_TONE_FIXED_PAIR_1300   0x0009u
 
#define DTMF_TX_TONE_FIXED_PAIR_2100   0x000Au
 
#define DTMF_TX_TONE_FIXED_PAIR_2225   0x000Bu
 
#define DTMF_TX_TONE_FIXED_PAIR_TA   0x000Cu
 
#define DTMF_TX_TONE_FIXED_PAIR_TB   0x000Du
 
#define DTMF_TX_TONE_FIXED_PAIR_TC   0x000Eu
 
#define DTMF_TX_TONE_FIXED_PAIR_TD   0x000Fu
 
#define DTMF_TX_TONE_D   0x0010u
 
#define DTMF_TX_TONE_1   0x0011u
 
#define DTMF_TX_TONE_2   0x0012u
 
#define DTMF_TX_TONE_3   0x0013u
 
#define DTMF_TX_TONE_4   0x0014u
 
#define DTMF_TX_TONE_5   0x0015u
 
#define DTMF_TX_TONE_6   0x0016u
 
#define DTMF_TX_TONE_7   0x0017u
 
#define DTMF_TX_TONE_8   0x0018u
 
#define DTMF_TX_TONE_9   0x0019u
 
#define DTMF_TX_TONE_0   0x001Au
 
#define DTMF_TX_TONE_STAR   0x001Bu
 
#define DTMF_TX_TONE_HASH   0x001Cu
 
#define DTMF_TX_TONE_A   0x001Du
 
#define DTMF_TX_TONE_B   0x001Eu
 
#define DTMF_TX_TONE_C   0x001Fu
 
#define DTMF_TX_TONE_MASK   0x001Fu
 
#define DTMF_RX_MODE_V21_FSK_HIGH   0x9000u
 DTMF receive mode register setting.
 
#define DTMF_RX_MODE_V21_FSK_LOW   0x8000u
 
#define DTMF_RX_MODE_BELL_103_FSK_HIGH   0x7000u
 
#define DTMF_RX_MODE_BELL_103_FSK_LOW   0x6000u
 
#define DTMF_RX_MODE_V23_FSK_1200   0x5000u
 
#define DTMF_RX_MODE_V23_FSK_75   0x4000u
 
#define DTMF_RX_MODE_BELL_202_FSK_1200   0x3000u
 
#define DTMF_RX_MODE_BELL_202_FSK_150   0x2000u
 
#define DTMF_RX_MODE_DTMF_TONES   0x1000u
 
#define DTMF_RX_MODE_DISABLED   0x0000u
 
#define DTMF_RX_MODE_MASK   0xF000u
 
#define DTMF_RX_LEVEL_0_DB   0x0E00u
 
#define DTMF_RX_LEVEL_MIN_1_5_DB   0x0C00u
 
#define DTMF_RX_LEVEL_MIN_3_DB   0x0A00u
 
#define DTMF_RX_LEVEL_MIN_4_5_DB   0x0800u
 
#define DTMF_RX_LEVEL_MIN_6_DB   0x0600u
 
#define DTMF_RX_LEVEL_MIN_7_5_DB   0x0400u
 
#define DTMF_RX_LEVEL_MIN_9_DB   0x0200u
 
#define DTMF_RX_LEVEL_MIN_10_5_DB   0x0000u
 
#define DTMF_RX_LEVEL_MASK   0x0E00u
 
#define DTMF_RX_USART_SYNC   0x0038u
 
#define DTMF_RX_USART_START_STOP   0x0030u
 
#define DTMF_RX_USART_DISABLED   0x0000u
 
#define DTMF_RX_USART_MASK   0x0038u
 
#define DTMF_RX_DATA_PARITY_8_PAR   0x0007u
 
#define DTMF_RX_DATA_PARITY_8_NO_PAR   0x0006u
 
#define DTMF_RX_DATA_PARITY_7_PAR   0x0005u
 
#define DTMF_RX_DATA_PARITY_7_NO_PAR   0x0004u
 
#define DTMF_RX_DATA_PARITY_6_PAR   0x0003u
 
#define DTMF_RX_DATA_PARITY_6_NO_PAR   0x0002u
 
#define DTMF_RX_DATA_PARITY_5_PAR   0x0001u
 
#define DTMF_RX_DATA_PARITY_5_NO_PAR   0x0000u
 
#define DTMF_RX_DATA_PARITY_MASK   0x0007u
 
#define DTMF_RX_TONE_DETECT_PROG_PAIR   0x0004u
 
#define DTMF_RX_TONE_DETECT_CALL_PROG   0x0003u
 
#define DTMF_RX_TONE_DETECT_ANSWER   0x0002u
 
#define DTMF_RX_TONE_DETECT_DTMF   0x0001u
 
#define DTMF_RX_TONE_DETECT_DISABLE   0x0007u
 
#define DTMF_RX_TONE_DETECT_MASK   0x0007u
 
#define DTMF_STATUS_IRQ   0x8000u
 DTMF status register setting.
 
#define DTMF_STATUS_PROG_FLAG   0x2000u
 
#define DTMF_STATUS_TX_READY   0x1000u
 
#define DTMF_STATUS_TX_UNDERFLOW   0x0800u
 
#define DTMF_STATUS_ENERGY_RX_CP   0x0400u
 
#define DTMF_STATUS_1010_PATTERN   0x0200u
 
#define DTMF_STATUS_CONT_0S   0x0100u
 
#define DTMF_STATUS_CONT_1S   0x0080u
 
#define DTMF_STATUS_RX_READY   0x0040u
 
#define DTMF_STATUS_RX_OVERFLOW   0x0020u
 
#define DTMF_STATUS_RX_FRAMING_ERROR   0x0010u
 
#define DTMF_STATUS_RX_EVEN_PARITY   0x0008u
 
#define DTMF_STATUS_FSK_OUT   0x0001u
 
#define DTMF_STATUS_TONE_D   0x0000u
 
#define DTMF_STATUS_TONE_1   0x0001u
 
#define DTMF_STATUS_TONE_2   0x0002u
 
#define DTMF_STATUS_TONE_3   0x0003u
 
#define DTMF_STATUS_TONE_4   0x0004u
 
#define DTMF_STATUS_TONE_5   0x0005u
 
#define DTMF_STATUS_TONE_6   0x0006u
 
#define DTMF_STATUS_TONE_7   0x0007u
 
#define DTMF_STATUS_TONE_8   0x0008u
 
#define DTMF_STATUS_TONE_9   0x0009u
 
#define DTMF_STATUS_TONE_0   0x000Au
 
#define DTMF_STATUS_TONE_STAR   0x000Bu
 
#define DTMF_STATUS_TONE_HASH   0x000Cu
 
#define DTMF_STATUS_TONE_A   0x000Du
 
#define DTMF_STATUS_TONE_B   0x000Eu
 
#define DTMF_STATUS_TONE_C   0x000Fu
 
#define DTMF_STATUS_TONE_MASK   0x000Fu
 
#define DTMF_TIMEOUT_CLEAR_IRQ   2000u
 DTMF timeout and timing setting.
 
#define DTMF_TIMEOUT_TX_READY   2000u
 
#define DTMF_TIMEOUT_CALL_PROGRESS   60000u
 
#define DTMF_TIMING_BUSY   50u
 
#define DTMF_TIMING_DISCONNECTED   250u
 
#define DTMF_TIMING_RINGING   2000u
 
#define DTMF_TIMING_CALL_PROGRESS   6000u
 
#define DTMF_TIMING_SEND_MESSAGE   2000u
 
#define DTMF_TIMING_RX_READY   10u
 
#define DTMF_TIMING_WAIT_FOR_MESSAGE   10000u
 
#define DTMF_STATE_IDLE   0
 DTMF state setting.
 
#define DTMF_STATE_IRQ_SET   1
 
#define DTMF_STATE_RINGING   2
 
#define DTMF_STATE_CALL_IN_PROGRESS   3
 
#define DTMF_DIAL_NUMBER_MAX_LEN   16
 DTMF dial number setting.
 
#define DTMF_SET_DATA_SAMPLE_EDGE   SET_SPI_DATA_SAMPLE_EDGE
 Data sample selection.
 
#define DTMF_SET_DATA_SAMPLE_MIDDLE   SET_SPI_DATA_SAMPLE_MIDDLE
 
#define DTMF_MAP_MIKROBUS(cfg, mikrobus)
 MikroBUS pin mapping.
 

Enumerations

enum  dtmf_return_value_t { DTMF_OK = 0 , DTMF_ERROR = -1 , DTMF_TIMEOUT = -2 }
 DTMF Click return value data. More...
 

Functions

void dtmf_cfg_setup (dtmf_cfg_t *cfg)
 DTMF configuration object setup function.
 
err_t dtmf_init (dtmf_t *ctx, dtmf_cfg_t *cfg)
 DTMF initialization function.
 
err_t dtmf_general_reset (dtmf_t *ctx)
 DTMF general reset function.
 
err_t dtmf_set_control (dtmf_t *ctx, uint16_t data_in)
 DTMF set control function.
 
err_t dtmf_set_transmit_mode (dtmf_t *ctx, uint16_t data_in)
 DTMF set transmit mode function.
 
err_t dtmf_set_receive_mode (dtmf_t *ctx, uint16_t data_in)
 DTMF set receive mode function.
 
err_t dtmf_transmit_data (dtmf_t *ctx, uint8_t data_in)
 DTMF transmit data function.
 
err_t dtmf_receive_data (dtmf_t *ctx, uint8_t *data_out)
 DTMF receive data function.
 
err_t dtmf_get_status (dtmf_t *ctx, uint16_t *data_out)
 DTMF get status function.
 
err_t dtmf_set_programming (dtmf_t *ctx, uint16_t data_in)
 DTMF set programming function.
 
void dtmf_set_hsw_pin (dtmf_t *ctx, uint8_t state)
 DTMF set hsw pin function.
 
void dtmf_hook_off (dtmf_t *ctx)
 DTMF hook off function.
 
void dtmf_hook_on (dtmf_t *ctx)
 DTMF hook on function.
 
uint8_t dtmf_get_rdn_pin (dtmf_t *ctx)
 DTMF get rdn pin function.
 
uint8_t dtmf_get_irq_pin (dtmf_t *ctx)
 DTMF get irq pin function.
 
uint8_t dtmf_tx_ready (dtmf_t *ctx)
 DTMF tx ready function.
 
uint8_t dtmf_rx_ready (dtmf_t *ctx)
 DTMF rx ready function.
 
uint8_t dtmf_call_progress (dtmf_t *ctx)
 DTMF call progress function.
 
uint8_t dtmf_unscram_1s_det (dtmf_t *ctx)
 DTMF unscram 1s det function.
 
err_t dtmf_clear_interrupts (dtmf_t *ctx)
 DTMF clear interrupts function.
 
err_t dtmf_handshake_init (dtmf_t *ctx)
 DTMF handshake init function.
 
err_t dtmf_dial (dtmf_t *ctx, uint8_t *dial_num)
 DTMF dial function.
 
err_t dtmf_send_message (dtmf_t *ctx, uint8_t *data_in, uint8_t len)
 DTMF send message function.
 

Detailed Description

This file contains API for DTMF Click Driver.

Enumeration Type Documentation

◆ dtmf_return_value_t

DTMF Click return value data.

Predefined enum values for driver return values.

Enumerator
DTMF_OK 
DTMF_ERROR 
DTMF_TIMEOUT