dtmf  2.1.0.0
dtmf.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** Copyright (C) 2020 MikroElektronika d.o.o.
3 ** Contact: https://www.mikroe.com/contact
4 **
5 ** Permission is hereby granted, free of charge, to any person obtaining a copy
6 ** of this software and associated documentation files (the "Software"), to deal
7 ** in the Software without restriction, including without limitation the rights
8 ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 ** copies of the Software, and to permit persons to whom the Software is
10 ** furnished to do so, subject to the following conditions:
11 ** The above copyright notice and this permission notice shall be
12 ** included in all copies or substantial portions of the Software.
13 **
14 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 ** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19 ** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 ** USE OR OTHER DEALINGS IN THE SOFTWARE.
21 ****************************************************************************/
22 
28 #ifndef DTMF_H
29 #define DTMF_H
30 
31 #ifdef __cplusplus
32 extern "C"{
33 #endif
34 
39 #ifdef PREINIT_SUPPORTED
40 #include "preinit.h"
41 #endif
42 
43 #ifdef MikroCCoreVersion
44  #if MikroCCoreVersion >= 1
45  #include "delays.h"
46  #endif
47 #endif
48 
49 #include "drv_digital_out.h"
50 #include "drv_digital_in.h"
51 #include "drv_spi_master.h"
52 #include "spi_specifics.h"
53 
74 #define DTMF_CMD_GENERAL_RESET 0x01
75 #define DTMF_CMD_GENERAL_CONTROL 0xE0
76 #define DTMF_CMD_TRANSMIT_MODE 0xE1
77 #define DTMF_CMD_RECEIVE_MODE 0xE2
78 #define DTMF_CMD_TRANSMIT_DATA 0xE3
79 #define DTMF_CMD_RECEIVE_DATA 0xE5
80 #define DTMF_CMD_STATUS 0xE6
81 #define DTMF_CMD_PROGRAMMING 0xE8
82  // dtmf_reg
84 
99 #define DTMF_CONTROL_TXAN_OFF 0x8000u
100 #define DTMF_CONTROL_TXA_OFF 0x4000u
101 #define DTMF_CONTROL_LB 0x0800u
102 #define DTMF_CONTROL_EQU 0x0400u
103 #define DTMF_CONTROL_PWR 0x0100u
104 #define DTMF_CONTROL_RST 0x0080u
105 #define DTMF_CONTROL_IRQN_EN 0x0040u
106 #define DTMF_CONTROL_IRQ_PROG_FLAG 0x0010u
107 #define DTMF_CONTROL_IRQ_TX_RDY_UNF 0x0008u
108 #define DTMF_CONTROL_IRQ_ENERGY_RX_CP 0x0004u
109 #define DTMF_CONTROL_IRQ_CONT_10 0x0002u
110 #define DTMF_CONTROL_IRQ_RX_RDY_OVF 0x0001u
111 #define DTMF_CONTROL_IRQ_MASK 0x001Fu
112 
117 #define DTMF_TX_MODE_V21_FSK_HIGH 0x9000u
118 #define DTMF_TX_MODE_V21_FSK_LOW 0x8000u
119 #define DTMF_TX_MODE_BELL_103_FSK_HIGH 0x7000u
120 #define DTMF_TX_MODE_BELL_103_FSK_LOW 0x6000u
121 #define DTMF_TX_MODE_V23_FSK_1200 0x5000u
122 #define DTMF_TX_MODE_V23_FSK_75 0x4000u
123 #define DTMF_TX_MODE_BELL_202_FSK_1200 0x3000u
124 #define DTMF_TX_MODE_BELL_202_FSK_150 0x2000u
125 #define DTMF_TX_MODE_DTMF_TONES 0x1000u
126 #define DTMF_TX_MODE_DISABLED 0x0000u
127 #define DTMF_TX_MODE_MASK 0xF000u
128 #define DTMF_TX_LEVEL_0_DB 0x0E00u
129 #define DTMF_TX_LEVEL_MIN_1_5_DB 0x0C00u
130 #define DTMF_TX_LEVEL_MIN_3_DB 0x0A00u
131 #define DTMF_TX_LEVEL_MIN_4_5_DB 0x0800u
132 #define DTMF_TX_LEVEL_MIN_6_DB 0x0600u
133 #define DTMF_TX_LEVEL_MIN_7_5_DB 0x0400u
134 #define DTMF_TX_LEVEL_MIN_9_DB 0x0200u
135 #define DTMF_TX_LEVEL_MIN_10_5_DB 0x0000u
136 #define DTMF_TX_LEVEL_MASK 0x0E00u
137 #define DTMF_TX_DTMF_TWIST_2_DB 0x00E0u
138 #define DTMF_TX_DTMF_TWIST_1_DB 0x00C0u
139 #define DTMF_TX_DTMF_TWIST_1_5_DB 0x00A0u
140 #define DTMF_TX_DTMF_TWIST_2_5_DB 0x0080u
141 #define DTMF_TX_DTMF_TWIST_3_DB 0x0060u
142 #define DTMF_TX_DTMF_TWIST_3_5_DB 0x0040u
143 #define DTMF_TX_DTMF_TWIST_4_DB 0x0020u
144 #define DTMF_TX_DTMF_TWIST_4_5_DB 0x0000u
145 #define DTMF_TX_DTMF_TWIST_MASK 0x00E0u
146 #define DTMF_TX_DATA_FORMAT_SYNC 0x0018u
147 #define DTMF_TX_DATA_FORMAT_SS_NO_PAR 0x0010u
148 #define DTMF_TX_DATA_FORMAT_SS_EVEN_PAR 0x0008u
149 #define DTMF_TX_DATA_FORMAT_SS_ODD_PAR 0x0000u
150 #define DTMF_TX_DATA_FORMAT_MASK 0x0018u
151 #define DTMF_TX_DATA_STOP_8_2 0x0007u
152 #define DTMF_TX_DATA_STOP_8_1 0x0006u
153 #define DTMF_TX_DATA_STOP_7_2 0x0005u
154 #define DTMF_TX_DATA_STOP_7_1 0x0004u
155 #define DTMF_TX_DATA_STOP_6_2 0x0003u
156 #define DTMF_TX_DATA_STOP_6_1 0x0002u
157 #define DTMF_TX_DATA_STOP_5_2 0x0001u
158 #define DTMF_TX_DATA_STOP_5_1 0x0000u
159 #define DTMF_TX_DATA_STOP_MASK 0x0007u
160 #define DTMF_TX_DATA_SOURCE_TX_BUF 0x0004u
161 #define DTMF_TX_DATA_SOURCE_CONT_1S 0x0003u
162 #define DTMF_TX_DATA_SOURCE_CONT_0S 0x0002u
163 #define DTMF_TX_DATA_SOURCE_CONT_ALT 0x0000u
164 #define DTMF_TX_DATA_SOURCE_MASK 0x0007u
165 #define DTMF_TX_TONE_FIXED_NO_TONE 0x0000u
166 #define DTMF_TX_TONE_FIXED_PAIR_697 0x0001u
167 #define DTMF_TX_TONE_FIXED_PAIR_770 0x0002u
168 #define DTMF_TX_TONE_FIXED_PAIR_852 0x0003u
169 #define DTMF_TX_TONE_FIXED_PAIR_941 0x0004u
170 #define DTMF_TX_TONE_FIXED_PAIR_1209 0x0005u
171 #define DTMF_TX_TONE_FIXED_PAIR_1336 0x0006u
172 #define DTMF_TX_TONE_FIXED_PAIR_1477 0x0007u
173 #define DTMF_TX_TONE_FIXED_PAIR_1633 0x0008u
174 #define DTMF_TX_TONE_FIXED_PAIR_1300 0x0009u
175 #define DTMF_TX_TONE_FIXED_PAIR_2100 0x000Au
176 #define DTMF_TX_TONE_FIXED_PAIR_2225 0x000Bu
177 #define DTMF_TX_TONE_FIXED_PAIR_TA 0x000Cu
178 #define DTMF_TX_TONE_FIXED_PAIR_TB 0x000Du
179 #define DTMF_TX_TONE_FIXED_PAIR_TC 0x000Eu
180 #define DTMF_TX_TONE_FIXED_PAIR_TD 0x000Fu
181 #define DTMF_TX_TONE_D 0x0010u
182 #define DTMF_TX_TONE_1 0x0011u
183 #define DTMF_TX_TONE_2 0x0012u
184 #define DTMF_TX_TONE_3 0x0013u
185 #define DTMF_TX_TONE_4 0x0014u
186 #define DTMF_TX_TONE_5 0x0015u
187 #define DTMF_TX_TONE_6 0x0016u
188 #define DTMF_TX_TONE_7 0x0017u
189 #define DTMF_TX_TONE_8 0x0018u
190 #define DTMF_TX_TONE_9 0x0019u
191 #define DTMF_TX_TONE_0 0x001Au
192 #define DTMF_TX_TONE_STAR 0x001Bu
193 #define DTMF_TX_TONE_HASH 0x001Cu
194 #define DTMF_TX_TONE_A 0x001Du
195 #define DTMF_TX_TONE_B 0x001Eu
196 #define DTMF_TX_TONE_C 0x001Fu
197 #define DTMF_TX_TONE_MASK 0x001Fu
198 
203 #define DTMF_RX_MODE_V21_FSK_HIGH 0x9000u
204 #define DTMF_RX_MODE_V21_FSK_LOW 0x8000u
205 #define DTMF_RX_MODE_BELL_103_FSK_HIGH 0x7000u
206 #define DTMF_RX_MODE_BELL_103_FSK_LOW 0x6000u
207 #define DTMF_RX_MODE_V23_FSK_1200 0x5000u
208 #define DTMF_RX_MODE_V23_FSK_75 0x4000u
209 #define DTMF_RX_MODE_BELL_202_FSK_1200 0x3000u
210 #define DTMF_RX_MODE_BELL_202_FSK_150 0x2000u
211 #define DTMF_RX_MODE_DTMF_TONES 0x1000u
212 #define DTMF_RX_MODE_DISABLED 0x0000u
213 #define DTMF_RX_MODE_MASK 0xF000u
214 #define DTMF_RX_LEVEL_0_DB 0x0E00u
215 #define DTMF_RX_LEVEL_MIN_1_5_DB 0x0C00u
216 #define DTMF_RX_LEVEL_MIN_3_DB 0x0A00u
217 #define DTMF_RX_LEVEL_MIN_4_5_DB 0x0800u
218 #define DTMF_RX_LEVEL_MIN_6_DB 0x0600u
219 #define DTMF_RX_LEVEL_MIN_7_5_DB 0x0400u
220 #define DTMF_RX_LEVEL_MIN_9_DB 0x0200u
221 #define DTMF_RX_LEVEL_MIN_10_5_DB 0x0000u
222 #define DTMF_RX_LEVEL_MASK 0x0E00u
223 #define DTMF_RX_USART_SYNC 0x0038u
224 #define DTMF_RX_USART_START_STOP 0x0030u
225 #define DTMF_RX_USART_DISABLED 0x0000u
226 #define DTMF_RX_USART_MASK 0x0038u
227 #define DTMF_RX_DATA_PARITY_8_PAR 0x0007u
228 #define DTMF_RX_DATA_PARITY_8_NO_PAR 0x0006u
229 #define DTMF_RX_DATA_PARITY_7_PAR 0x0005u
230 #define DTMF_RX_DATA_PARITY_7_NO_PAR 0x0004u
231 #define DTMF_RX_DATA_PARITY_6_PAR 0x0003u
232 #define DTMF_RX_DATA_PARITY_6_NO_PAR 0x0002u
233 #define DTMF_RX_DATA_PARITY_5_PAR 0x0001u
234 #define DTMF_RX_DATA_PARITY_5_NO_PAR 0x0000u
235 #define DTMF_RX_DATA_PARITY_MASK 0x0007u
236 #define DTMF_RX_TONE_DETECT_PROG_PAIR 0x0004u
237 #define DTMF_RX_TONE_DETECT_CALL_PROG 0x0003u
238 #define DTMF_RX_TONE_DETECT_ANSWER 0x0002u
239 #define DTMF_RX_TONE_DETECT_DTMF 0x0001u
240 #define DTMF_RX_TONE_DETECT_DISABLE 0x0007u
241 #define DTMF_RX_TONE_DETECT_MASK 0x0007u
242 
247 #define DTMF_STATUS_IRQ 0x8000u
248 #define DTMF_STATUS_PROG_FLAG 0x2000u
249 #define DTMF_STATUS_TX_READY 0x1000u
250 #define DTMF_STATUS_TX_UNDERFLOW 0x0800u
251 #define DTMF_STATUS_ENERGY_RX_CP 0x0400u
252 #define DTMF_STATUS_1010_PATTERN 0x0200u
253 #define DTMF_STATUS_CONT_0S 0x0100u
254 #define DTMF_STATUS_CONT_1S 0x0080u
255 #define DTMF_STATUS_RX_READY 0x0040u
256 #define DTMF_STATUS_RX_OVERFLOW 0x0020u
257 #define DTMF_STATUS_RX_FRAMING_ERROR 0x0010u
258 #define DTMF_STATUS_RX_EVEN_PARITY 0x0008u
259 #define DTMF_STATUS_FSK_OUT 0x0001u
260 #define DTMF_STATUS_TONE_D 0x0000u
261 #define DTMF_STATUS_TONE_1 0x0001u
262 #define DTMF_STATUS_TONE_2 0x0002u
263 #define DTMF_STATUS_TONE_3 0x0003u
264 #define DTMF_STATUS_TONE_4 0x0004u
265 #define DTMF_STATUS_TONE_5 0x0005u
266 #define DTMF_STATUS_TONE_6 0x0006u
267 #define DTMF_STATUS_TONE_7 0x0007u
268 #define DTMF_STATUS_TONE_8 0x0008u
269 #define DTMF_STATUS_TONE_9 0x0009u
270 #define DTMF_STATUS_TONE_0 0x000Au
271 #define DTMF_STATUS_TONE_STAR 0x000Bu
272 #define DTMF_STATUS_TONE_HASH 0x000Cu
273 #define DTMF_STATUS_TONE_A 0x000Du
274 #define DTMF_STATUS_TONE_B 0x000Eu
275 #define DTMF_STATUS_TONE_C 0x000Fu
276 #define DTMF_STATUS_TONE_MASK 0x000Fu
277 
282 #define DTMF_TIMEOUT_CLEAR_IRQ 2000u
283 #define DTMF_TIMEOUT_TX_READY 2000u
284 #define DTMF_TIMEOUT_CALL_PROGRESS 60000u
285 #define DTMF_TIMING_BUSY 50u
286 #define DTMF_TIMING_DISCONNECTED 250u
287 #define DTMF_TIMING_RINGING 2000u
288 #define DTMF_TIMING_CALL_PROGRESS 6000u
289 #define DTMF_TIMING_SEND_MESSAGE 2000u
290 #define DTMF_TIMING_RX_READY 10u
291 #define DTMF_TIMING_WAIT_FOR_MESSAGE 10000u
292 
297 #define DTMF_STATE_IDLE 0
298 #define DTMF_STATE_IRQ_SET 1
299 #define DTMF_STATE_RINGING 2
300 #define DTMF_STATE_CALL_IN_PROGRESS 3
301 
306 #define DTMF_DIAL_NUMBER_MAX_LEN 16
307 
316 #define DTMF_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
317 #define DTMF_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
318  // dtmf_set
320 
335 #define DTMF_MAP_MIKROBUS( cfg, mikrobus ) \
336  cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
337  cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
338  cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
339  cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
340  cfg.rdn = MIKROBUS( mikrobus, MIKROBUS_AN ); \
341  cfg.hsw = MIKROBUS( mikrobus, MIKROBUS_RST ); \
342  cfg.irq = MIKROBUS( mikrobus, MIKROBUS_INT )
343  // dtmf_map // dtmf
346 
351 typedef struct
352 {
353  // Output pins
354  digital_out_t hsw;
356  // Input pins
357  digital_in_t rdn;
358  digital_in_t irq;
360  // Modules
361  spi_master_t spi;
363  pin_name_t chip_select;
365  uint16_t control;
366  uint16_t tx_mode;
367  uint16_t rx_mode;
368  uint16_t status;
370 } dtmf_t;
371 
376 typedef struct
377 {
378  // Communication gpio pins
379  pin_name_t miso;
380  pin_name_t mosi;
381  pin_name_t sck;
382  pin_name_t cs;
384  // Additional gpio pins
385  pin_name_t rdn;
386  pin_name_t hsw;
387  pin_name_t irq;
389  // static variable
390  uint32_t spi_speed;
391  spi_master_mode_t spi_mode;
392  spi_master_chip_select_polarity_t cs_polarity;
394 } dtmf_cfg_t;
395 
400 typedef enum
401 {
402  DTMF_OK = 0,
404  DTMF_TIMEOUT = -2
405 
407 
424 
438 err_t dtmf_init ( dtmf_t *ctx, dtmf_cfg_t *cfg );
439 
451 err_t dtmf_general_reset ( dtmf_t *ctx );
452 
466 err_t dtmf_set_control ( dtmf_t *ctx, uint16_t data_in );
467 
479 err_t dtmf_set_transmit_mode ( dtmf_t *ctx, uint16_t data_in );
480 
492 err_t dtmf_set_receive_mode ( dtmf_t *ctx, uint16_t data_in );
493 
508 err_t dtmf_transmit_data ( dtmf_t *ctx, uint8_t data_in );
509 
523 err_t dtmf_receive_data ( dtmf_t *ctx, uint8_t *data_out );
524 
536 err_t dtmf_get_status ( dtmf_t *ctx, uint16_t *data_out );
537 
550 err_t dtmf_set_programming ( dtmf_t *ctx, uint16_t data_in );
551 
561 void dtmf_set_hsw_pin ( dtmf_t *ctx, uint8_t state );
562 
571 void dtmf_hook_off ( dtmf_t *ctx );
572 
581 void dtmf_hook_on ( dtmf_t *ctx );
582 
591 uint8_t dtmf_get_rdn_pin ( dtmf_t *ctx );
592 
601 uint8_t dtmf_get_irq_pin ( dtmf_t *ctx );
602 
612 uint8_t dtmf_tx_ready ( dtmf_t *ctx );
613 
623 uint8_t dtmf_rx_ready ( dtmf_t *ctx );
624 
634 uint8_t dtmf_call_progress ( dtmf_t *ctx );
635 
646 uint8_t dtmf_unscram_1s_det ( dtmf_t *ctx );
647 
659 
671 
683 err_t dtmf_dial ( dtmf_t *ctx, uint8_t *dial_num );
684 
698 err_t dtmf_send_message ( dtmf_t *ctx, uint8_t *data_in, uint8_t len );
699 
700 #ifdef __cplusplus
701 }
702 #endif
703 #endif // DTMF_H
704  // dtmf
706 
707 // ------------------------------------------------------------------------ END
DTMF_TIMEOUT
@ DTMF_TIMEOUT
Definition: dtmf.h:404
dtmf_get_status
err_t dtmf_get_status(dtmf_t *ctx, uint16_t *data_out)
DTMF get status function.
dtmf_cfg_t::miso
pin_name_t miso
Definition: dtmf.h:379
dtmf_tx_ready
uint8_t dtmf_tx_ready(dtmf_t *ctx)
DTMF tx ready function.
spi_specifics.h
This file contains SPI specific macros, functions, etc.
dtmf_unscram_1s_det
uint8_t dtmf_unscram_1s_det(dtmf_t *ctx)
DTMF unscram 1s det function.
dtmf_cfg_t::mosi
pin_name_t mosi
Definition: dtmf.h:380
dtmf_cfg_t::cs_polarity
spi_master_chip_select_polarity_t cs_polarity
Definition: dtmf.h:392
dtmf_set_hsw_pin
void dtmf_set_hsw_pin(dtmf_t *ctx, uint8_t state)
DTMF set hsw pin function.
dtmf_t::spi
spi_master_t spi
Definition: dtmf.h:361
dtmf_send_message
err_t dtmf_send_message(dtmf_t *ctx, uint8_t *data_in, uint8_t len)
DTMF send message function.
dtmf_t::status
uint16_t status
Definition: dtmf.h:368
dtmf_general_reset
err_t dtmf_general_reset(dtmf_t *ctx)
DTMF general reset function.
dtmf_init
err_t dtmf_init(dtmf_t *ctx, dtmf_cfg_t *cfg)
DTMF initialization function.
dtmf_call_progress
uint8_t dtmf_call_progress(dtmf_t *ctx)
DTMF call progress function.
dtmf_hook_on
void dtmf_hook_on(dtmf_t *ctx)
DTMF hook on function.
dtmf_t::tx_mode
uint16_t tx_mode
Definition: dtmf.h:366
dtmf_return_value_t
dtmf_return_value_t
DTMF Click return value data.
Definition: dtmf.h:401
dtmf_t::chip_select
pin_name_t chip_select
Definition: dtmf.h:363
dtmf_t
DTMF Click context object.
Definition: dtmf.h:352
dtmf_set_control
err_t dtmf_set_control(dtmf_t *ctx, uint16_t data_in)
DTMF set control function.
dtmf_cfg_t::spi_speed
uint32_t spi_speed
Definition: dtmf.h:390
dtmf_set_transmit_mode
err_t dtmf_set_transmit_mode(dtmf_t *ctx, uint16_t data_in)
DTMF set transmit mode function.
dtmf_t::rdn
digital_in_t rdn
Definition: dtmf.h:357
dtmf_clear_interrupts
err_t dtmf_clear_interrupts(dtmf_t *ctx)
DTMF clear interrupts function.
dtmf_cfg_t::irq
pin_name_t irq
Definition: dtmf.h:387
dtmf_get_rdn_pin
uint8_t dtmf_get_rdn_pin(dtmf_t *ctx)
DTMF get rdn pin function.
dtmf_hook_off
void dtmf_hook_off(dtmf_t *ctx)
DTMF hook off function.
dtmf_cfg_t::sck
pin_name_t sck
Definition: dtmf.h:381
dtmf_cfg_t::spi_mode
spi_master_mode_t spi_mode
Definition: dtmf.h:391
dtmf_t::rx_mode
uint16_t rx_mode
Definition: dtmf.h:367
dtmf_rx_ready
uint8_t dtmf_rx_ready(dtmf_t *ctx)
DTMF rx ready function.
dtmf_cfg_t::cs
pin_name_t cs
Definition: dtmf.h:382
DTMF_ERROR
@ DTMF_ERROR
Definition: dtmf.h:403
dtmf_handshake_init
err_t dtmf_handshake_init(dtmf_t *ctx)
DTMF handshake init function.
dtmf_t::hsw
digital_out_t hsw
Definition: dtmf.h:354
dtmf_receive_data
err_t dtmf_receive_data(dtmf_t *ctx, uint8_t *data_out)
DTMF receive data function.
dtmf_set_receive_mode
err_t dtmf_set_receive_mode(dtmf_t *ctx, uint16_t data_in)
DTMF set receive mode function.
dtmf_get_irq_pin
uint8_t dtmf_get_irq_pin(dtmf_t *ctx)
DTMF get irq pin function.
DTMF_OK
@ DTMF_OK
Definition: dtmf.h:402
dtmf_set_programming
err_t dtmf_set_programming(dtmf_t *ctx, uint16_t data_in)
DTMF set programming function.
dtmf_cfg_setup
void dtmf_cfg_setup(dtmf_cfg_t *cfg)
DTMF configuration object setup function.
dtmf_cfg_t::rdn
pin_name_t rdn
Definition: dtmf.h:385
dtmf_cfg_t
DTMF Click configuration object.
Definition: dtmf.h:377
dtmf_cfg_t::hsw
pin_name_t hsw
Definition: dtmf.h:386
dtmf_t::control
uint16_t control
Definition: dtmf.h:365
dtmf_t::irq
digital_in_t irq
Definition: dtmf.h:358
dtmf_transmit_data
err_t dtmf_transmit_data(dtmf_t *ctx, uint8_t data_in)
DTMF transmit data function.
dtmf_dial
err_t dtmf_dial(dtmf_t *ctx, uint8_t *dial_num)
DTMF dial function.