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 
35 #include "mikrosdk_version.h"
36 
37 #ifdef __GNUC__
38 #if mikroSDK_GET_VERSION < 20800ul
39 #include "rcu_delays.h"
40 #else
41 #include "delays.h"
42 #endif
43 #endif
44 
45 #include "drv_digital_out.h"
46 #include "drv_digital_in.h"
47 #include "drv_spi_master.h"
48 #include "spi_specifics.h"
49 
70 #define DTMF_CMD_GENERAL_RESET 0x01
71 #define DTMF_CMD_GENERAL_CONTROL 0xE0
72 #define DTMF_CMD_TRANSMIT_MODE 0xE1
73 #define DTMF_CMD_RECEIVE_MODE 0xE2
74 #define DTMF_CMD_TRANSMIT_DATA 0xE3
75 #define DTMF_CMD_RECEIVE_DATA 0xE5
76 #define DTMF_CMD_STATUS 0xE6
77 #define DTMF_CMD_PROGRAMMING 0xE8
78  // dtmf_reg
80 
95 #define DTMF_CONTROL_TXAN_OFF 0x8000u
96 #define DTMF_CONTROL_TXA_OFF 0x4000u
97 #define DTMF_CONTROL_LB 0x0800u
98 #define DTMF_CONTROL_EQU 0x0400u
99 #define DTMF_CONTROL_PWR 0x0100u
100 #define DTMF_CONTROL_RST 0x0080u
101 #define DTMF_CONTROL_IRQN_EN 0x0040u
102 #define DTMF_CONTROL_IRQ_PROG_FLAG 0x0010u
103 #define DTMF_CONTROL_IRQ_TX_RDY_UNF 0x0008u
104 #define DTMF_CONTROL_IRQ_ENERGY_RX_CP 0x0004u
105 #define DTMF_CONTROL_IRQ_CONT_10 0x0002u
106 #define DTMF_CONTROL_IRQ_RX_RDY_OVF 0x0001u
107 #define DTMF_CONTROL_IRQ_MASK 0x001Fu
108 
113 #define DTMF_TX_MODE_V21_FSK_HIGH 0x9000u
114 #define DTMF_TX_MODE_V21_FSK_LOW 0x8000u
115 #define DTMF_TX_MODE_BELL_103_FSK_HIGH 0x7000u
116 #define DTMF_TX_MODE_BELL_103_FSK_LOW 0x6000u
117 #define DTMF_TX_MODE_V23_FSK_1200 0x5000u
118 #define DTMF_TX_MODE_V23_FSK_75 0x4000u
119 #define DTMF_TX_MODE_BELL_202_FSK_1200 0x3000u
120 #define DTMF_TX_MODE_BELL_202_FSK_150 0x2000u
121 #define DTMF_TX_MODE_DTMF_TONES 0x1000u
122 #define DTMF_TX_MODE_DISABLED 0x0000u
123 #define DTMF_TX_MODE_MASK 0xF000u
124 #define DTMF_TX_LEVEL_0_DB 0x0E00u
125 #define DTMF_TX_LEVEL_MIN_1_5_DB 0x0C00u
126 #define DTMF_TX_LEVEL_MIN_3_DB 0x0A00u
127 #define DTMF_TX_LEVEL_MIN_4_5_DB 0x0800u
128 #define DTMF_TX_LEVEL_MIN_6_DB 0x0600u
129 #define DTMF_TX_LEVEL_MIN_7_5_DB 0x0400u
130 #define DTMF_TX_LEVEL_MIN_9_DB 0x0200u
131 #define DTMF_TX_LEVEL_MIN_10_5_DB 0x0000u
132 #define DTMF_TX_LEVEL_MASK 0x0E00u
133 #define DTMF_TX_DTMF_TWIST_2_DB 0x00E0u
134 #define DTMF_TX_DTMF_TWIST_1_DB 0x00C0u
135 #define DTMF_TX_DTMF_TWIST_1_5_DB 0x00A0u
136 #define DTMF_TX_DTMF_TWIST_2_5_DB 0x0080u
137 #define DTMF_TX_DTMF_TWIST_3_DB 0x0060u
138 #define DTMF_TX_DTMF_TWIST_3_5_DB 0x0040u
139 #define DTMF_TX_DTMF_TWIST_4_DB 0x0020u
140 #define DTMF_TX_DTMF_TWIST_4_5_DB 0x0000u
141 #define DTMF_TX_DTMF_TWIST_MASK 0x00E0u
142 #define DTMF_TX_DATA_FORMAT_SYNC 0x0018u
143 #define DTMF_TX_DATA_FORMAT_SS_NO_PAR 0x0010u
144 #define DTMF_TX_DATA_FORMAT_SS_EVEN_PAR 0x0008u
145 #define DTMF_TX_DATA_FORMAT_SS_ODD_PAR 0x0000u
146 #define DTMF_TX_DATA_FORMAT_MASK 0x0018u
147 #define DTMF_TX_DATA_STOP_8_2 0x0007u
148 #define DTMF_TX_DATA_STOP_8_1 0x0006u
149 #define DTMF_TX_DATA_STOP_7_2 0x0005u
150 #define DTMF_TX_DATA_STOP_7_1 0x0004u
151 #define DTMF_TX_DATA_STOP_6_2 0x0003u
152 #define DTMF_TX_DATA_STOP_6_1 0x0002u
153 #define DTMF_TX_DATA_STOP_5_2 0x0001u
154 #define DTMF_TX_DATA_STOP_5_1 0x0000u
155 #define DTMF_TX_DATA_STOP_MASK 0x0007u
156 #define DTMF_TX_DATA_SOURCE_TX_BUF 0x0004u
157 #define DTMF_TX_DATA_SOURCE_CONT_1S 0x0003u
158 #define DTMF_TX_DATA_SOURCE_CONT_0S 0x0002u
159 #define DTMF_TX_DATA_SOURCE_CONT_ALT 0x0000u
160 #define DTMF_TX_DATA_SOURCE_MASK 0x0007u
161 #define DTMF_TX_TONE_FIXED_NO_TONE 0x0000u
162 #define DTMF_TX_TONE_FIXED_PAIR_697 0x0001u
163 #define DTMF_TX_TONE_FIXED_PAIR_770 0x0002u
164 #define DTMF_TX_TONE_FIXED_PAIR_852 0x0003u
165 #define DTMF_TX_TONE_FIXED_PAIR_941 0x0004u
166 #define DTMF_TX_TONE_FIXED_PAIR_1209 0x0005u
167 #define DTMF_TX_TONE_FIXED_PAIR_1336 0x0006u
168 #define DTMF_TX_TONE_FIXED_PAIR_1477 0x0007u
169 #define DTMF_TX_TONE_FIXED_PAIR_1633 0x0008u
170 #define DTMF_TX_TONE_FIXED_PAIR_1300 0x0009u
171 #define DTMF_TX_TONE_FIXED_PAIR_2100 0x000Au
172 #define DTMF_TX_TONE_FIXED_PAIR_2225 0x000Bu
173 #define DTMF_TX_TONE_FIXED_PAIR_TA 0x000Cu
174 #define DTMF_TX_TONE_FIXED_PAIR_TB 0x000Du
175 #define DTMF_TX_TONE_FIXED_PAIR_TC 0x000Eu
176 #define DTMF_TX_TONE_FIXED_PAIR_TD 0x000Fu
177 #define DTMF_TX_TONE_D 0x0010u
178 #define DTMF_TX_TONE_1 0x0011u
179 #define DTMF_TX_TONE_2 0x0012u
180 #define DTMF_TX_TONE_3 0x0013u
181 #define DTMF_TX_TONE_4 0x0014u
182 #define DTMF_TX_TONE_5 0x0015u
183 #define DTMF_TX_TONE_6 0x0016u
184 #define DTMF_TX_TONE_7 0x0017u
185 #define DTMF_TX_TONE_8 0x0018u
186 #define DTMF_TX_TONE_9 0x0019u
187 #define DTMF_TX_TONE_0 0x001Au
188 #define DTMF_TX_TONE_STAR 0x001Bu
189 #define DTMF_TX_TONE_HASH 0x001Cu
190 #define DTMF_TX_TONE_A 0x001Du
191 #define DTMF_TX_TONE_B 0x001Eu
192 #define DTMF_TX_TONE_C 0x001Fu
193 #define DTMF_TX_TONE_MASK 0x001Fu
194 
199 #define DTMF_RX_MODE_V21_FSK_HIGH 0x9000u
200 #define DTMF_RX_MODE_V21_FSK_LOW 0x8000u
201 #define DTMF_RX_MODE_BELL_103_FSK_HIGH 0x7000u
202 #define DTMF_RX_MODE_BELL_103_FSK_LOW 0x6000u
203 #define DTMF_RX_MODE_V23_FSK_1200 0x5000u
204 #define DTMF_RX_MODE_V23_FSK_75 0x4000u
205 #define DTMF_RX_MODE_BELL_202_FSK_1200 0x3000u
206 #define DTMF_RX_MODE_BELL_202_FSK_150 0x2000u
207 #define DTMF_RX_MODE_DTMF_TONES 0x1000u
208 #define DTMF_RX_MODE_DISABLED 0x0000u
209 #define DTMF_RX_MODE_MASK 0xF000u
210 #define DTMF_RX_LEVEL_0_DB 0x0E00u
211 #define DTMF_RX_LEVEL_MIN_1_5_DB 0x0C00u
212 #define DTMF_RX_LEVEL_MIN_3_DB 0x0A00u
213 #define DTMF_RX_LEVEL_MIN_4_5_DB 0x0800u
214 #define DTMF_RX_LEVEL_MIN_6_DB 0x0600u
215 #define DTMF_RX_LEVEL_MIN_7_5_DB 0x0400u
216 #define DTMF_RX_LEVEL_MIN_9_DB 0x0200u
217 #define DTMF_RX_LEVEL_MIN_10_5_DB 0x0000u
218 #define DTMF_RX_LEVEL_MASK 0x0E00u
219 #define DTMF_RX_USART_SYNC 0x0038u
220 #define DTMF_RX_USART_START_STOP 0x0030u
221 #define DTMF_RX_USART_DISABLED 0x0000u
222 #define DTMF_RX_USART_MASK 0x0038u
223 #define DTMF_RX_DATA_PARITY_8_PAR 0x0007u
224 #define DTMF_RX_DATA_PARITY_8_NO_PAR 0x0006u
225 #define DTMF_RX_DATA_PARITY_7_PAR 0x0005u
226 #define DTMF_RX_DATA_PARITY_7_NO_PAR 0x0004u
227 #define DTMF_RX_DATA_PARITY_6_PAR 0x0003u
228 #define DTMF_RX_DATA_PARITY_6_NO_PAR 0x0002u
229 #define DTMF_RX_DATA_PARITY_5_PAR 0x0001u
230 #define DTMF_RX_DATA_PARITY_5_NO_PAR 0x0000u
231 #define DTMF_RX_DATA_PARITY_MASK 0x0007u
232 #define DTMF_RX_TONE_DETECT_PROG_PAIR 0x0004u
233 #define DTMF_RX_TONE_DETECT_CALL_PROG 0x0003u
234 #define DTMF_RX_TONE_DETECT_ANSWER 0x0002u
235 #define DTMF_RX_TONE_DETECT_DTMF 0x0001u
236 #define DTMF_RX_TONE_DETECT_DISABLE 0x0007u
237 #define DTMF_RX_TONE_DETECT_MASK 0x0007u
238 
243 #define DTMF_STATUS_IRQ 0x8000u
244 #define DTMF_STATUS_PROG_FLAG 0x2000u
245 #define DTMF_STATUS_TX_READY 0x1000u
246 #define DTMF_STATUS_TX_UNDERFLOW 0x0800u
247 #define DTMF_STATUS_ENERGY_RX_CP 0x0400u
248 #define DTMF_STATUS_1010_PATTERN 0x0200u
249 #define DTMF_STATUS_CONT_0S 0x0100u
250 #define DTMF_STATUS_CONT_1S 0x0080u
251 #define DTMF_STATUS_RX_READY 0x0040u
252 #define DTMF_STATUS_RX_OVERFLOW 0x0020u
253 #define DTMF_STATUS_RX_FRAMING_ERROR 0x0010u
254 #define DTMF_STATUS_RX_EVEN_PARITY 0x0008u
255 #define DTMF_STATUS_FSK_OUT 0x0001u
256 #define DTMF_STATUS_TONE_D 0x0000u
257 #define DTMF_STATUS_TONE_1 0x0001u
258 #define DTMF_STATUS_TONE_2 0x0002u
259 #define DTMF_STATUS_TONE_3 0x0003u
260 #define DTMF_STATUS_TONE_4 0x0004u
261 #define DTMF_STATUS_TONE_5 0x0005u
262 #define DTMF_STATUS_TONE_6 0x0006u
263 #define DTMF_STATUS_TONE_7 0x0007u
264 #define DTMF_STATUS_TONE_8 0x0008u
265 #define DTMF_STATUS_TONE_9 0x0009u
266 #define DTMF_STATUS_TONE_0 0x000Au
267 #define DTMF_STATUS_TONE_STAR 0x000Bu
268 #define DTMF_STATUS_TONE_HASH 0x000Cu
269 #define DTMF_STATUS_TONE_A 0x000Du
270 #define DTMF_STATUS_TONE_B 0x000Eu
271 #define DTMF_STATUS_TONE_C 0x000Fu
272 #define DTMF_STATUS_TONE_MASK 0x000Fu
273 
278 #define DTMF_TIMEOUT_CLEAR_IRQ 2000u
279 #define DTMF_TIMEOUT_TX_READY 2000u
280 #define DTMF_TIMEOUT_CALL_PROGRESS 60000u
281 #define DTMF_TIMING_BUSY 50u
282 #define DTMF_TIMING_DISCONNECTED 250u
283 #define DTMF_TIMING_RINGING 2000u
284 #define DTMF_TIMING_CALL_PROGRESS 6000u
285 #define DTMF_TIMING_SEND_MESSAGE 2000u
286 #define DTMF_TIMING_RX_READY 10u
287 #define DTMF_TIMING_WAIT_FOR_MESSAGE 10000u
288 
293 #define DTMF_STATE_IDLE 0
294 #define DTMF_STATE_IRQ_SET 1
295 #define DTMF_STATE_RINGING 2
296 #define DTMF_STATE_CALL_IN_PROGRESS 3
297 
302 #define DTMF_DIAL_NUMBER_MAX_LEN 16
303 
312 #define DTMF_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
313 #define DTMF_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
314  // dtmf_set
316 
331 #define DTMF_MAP_MIKROBUS( cfg, mikrobus ) \
332  cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
333  cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
334  cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
335  cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
336  cfg.rdn = MIKROBUS( mikrobus, MIKROBUS_AN ); \
337  cfg.hsw = MIKROBUS( mikrobus, MIKROBUS_RST ); \
338  cfg.irq = MIKROBUS( mikrobus, MIKROBUS_INT )
339  // dtmf_map // dtmf
342 
347 typedef struct
348 {
349  // Output pins
350  digital_out_t hsw;
352  // Input pins
353  digital_in_t rdn;
354  digital_in_t irq;
356  // Modules
357  spi_master_t spi;
359  pin_name_t chip_select;
361  uint16_t control;
362  uint16_t tx_mode;
363  uint16_t rx_mode;
364  uint16_t status;
366 } dtmf_t;
367 
372 typedef struct
373 {
374  // Communication gpio pins
375  pin_name_t miso;
376  pin_name_t mosi;
377  pin_name_t sck;
378  pin_name_t cs;
380  // Additional gpio pins
381  pin_name_t rdn;
382  pin_name_t hsw;
383  pin_name_t irq;
385  // static variable
386  uint32_t spi_speed;
387  spi_master_mode_t spi_mode;
388  spi_master_chip_select_polarity_t cs_polarity;
390 } dtmf_cfg_t;
391 
396 typedef enum
397 {
398  DTMF_OK = 0,
400  DTMF_TIMEOUT = -2
401 
403 
420 
434 err_t dtmf_init ( dtmf_t *ctx, dtmf_cfg_t *cfg );
435 
447 err_t dtmf_general_reset ( dtmf_t *ctx );
448 
462 err_t dtmf_set_control ( dtmf_t *ctx, uint16_t data_in );
463 
475 err_t dtmf_set_transmit_mode ( dtmf_t *ctx, uint16_t data_in );
476 
488 err_t dtmf_set_receive_mode ( dtmf_t *ctx, uint16_t data_in );
489 
504 err_t dtmf_transmit_data ( dtmf_t *ctx, uint8_t data_in );
505 
519 err_t dtmf_receive_data ( dtmf_t *ctx, uint8_t *data_out );
520 
532 err_t dtmf_get_status ( dtmf_t *ctx, uint16_t *data_out );
533 
546 err_t dtmf_set_programming ( dtmf_t *ctx, uint16_t data_in );
547 
557 void dtmf_set_hsw_pin ( dtmf_t *ctx, uint8_t state );
558 
567 void dtmf_hook_off ( dtmf_t *ctx );
568 
577 void dtmf_hook_on ( dtmf_t *ctx );
578 
587 uint8_t dtmf_get_rdn_pin ( dtmf_t *ctx );
588 
597 uint8_t dtmf_get_irq_pin ( dtmf_t *ctx );
598 
608 uint8_t dtmf_tx_ready ( dtmf_t *ctx );
609 
619 uint8_t dtmf_rx_ready ( dtmf_t *ctx );
620 
630 uint8_t dtmf_call_progress ( dtmf_t *ctx );
631 
642 uint8_t dtmf_unscram_1s_det ( dtmf_t *ctx );
643 
655 
667 
679 err_t dtmf_dial ( dtmf_t *ctx, uint8_t *dial_num );
680 
694 err_t dtmf_send_message ( dtmf_t *ctx, uint8_t *data_in, uint8_t len );
695 
696 #ifdef __cplusplus
697 }
698 #endif
699 #endif // DTMF_H
700  // dtmf
702 
703 // ------------------------------------------------------------------------ END
DTMF_TIMEOUT
@ DTMF_TIMEOUT
Definition: dtmf.h:400
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:375
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:376
dtmf_cfg_t::cs_polarity
spi_master_chip_select_polarity_t cs_polarity
Definition: dtmf.h:388
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:357
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:364
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:362
dtmf_return_value_t
dtmf_return_value_t
DTMF Click return value data.
Definition: dtmf.h:397
dtmf_t::chip_select
pin_name_t chip_select
Definition: dtmf.h:359
dtmf_t
DTMF Click context object.
Definition: dtmf.h:348
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:386
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:353
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:383
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:377
dtmf_cfg_t::spi_mode
spi_master_mode_t spi_mode
Definition: dtmf.h:387
dtmf_t::rx_mode
uint16_t rx_mode
Definition: dtmf.h:363
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:378
DTMF_ERROR
@ DTMF_ERROR
Definition: dtmf.h:399
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:350
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:398
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:381
dtmf_cfg_t
DTMF Click configuration object.
Definition: dtmf.h:373
dtmf_cfg_t::hsw
pin_name_t hsw
Definition: dtmf.h:382
dtmf_t::control
uint16_t control
Definition: dtmf.h:361
dtmf_t::irq
digital_in_t irq
Definition: dtmf.h:354
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.