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 "drv_digital_out.h"
36 #include "drv_digital_in.h"
37 #include "drv_spi_master.h"
38 #include "spi_specifics.h"
39 
60 #define DTMF_CMD_GENERAL_RESET 0x01
61 #define DTMF_CMD_GENERAL_CONTROL 0xE0
62 #define DTMF_CMD_TRANSMIT_MODE 0xE1
63 #define DTMF_CMD_RECEIVE_MODE 0xE2
64 #define DTMF_CMD_TRANSMIT_DATA 0xE3
65 #define DTMF_CMD_RECEIVE_DATA 0xE5
66 #define DTMF_CMD_STATUS 0xE6
67 #define DTMF_CMD_PROGRAMMING 0xE8
68  // dtmf_reg
70 
85 #define DTMF_CONTROL_TXAN_OFF 0x8000u
86 #define DTMF_CONTROL_TXA_OFF 0x4000u
87 #define DTMF_CONTROL_LB 0x0800u
88 #define DTMF_CONTROL_EQU 0x0400u
89 #define DTMF_CONTROL_PWR 0x0100u
90 #define DTMF_CONTROL_RST 0x0080u
91 #define DTMF_CONTROL_IRQN_EN 0x0040u
92 #define DTMF_CONTROL_IRQ_PROG_FLAG 0x0010u
93 #define DTMF_CONTROL_IRQ_TX_RDY_UNF 0x0008u
94 #define DTMF_CONTROL_IRQ_ENERGY_RX_CP 0x0004u
95 #define DTMF_CONTROL_IRQ_CONT_10 0x0002u
96 #define DTMF_CONTROL_IRQ_RX_RDY_OVF 0x0001u
97 #define DTMF_CONTROL_IRQ_MASK 0x001Fu
98 
103 #define DTMF_TX_MODE_V21_FSK_HIGH 0x9000u
104 #define DTMF_TX_MODE_V21_FSK_LOW 0x8000u
105 #define DTMF_TX_MODE_BELL_103_FSK_HIGH 0x7000u
106 #define DTMF_TX_MODE_BELL_103_FSK_LOW 0x6000u
107 #define DTMF_TX_MODE_V23_FSK_1200 0x5000u
108 #define DTMF_TX_MODE_V23_FSK_75 0x4000u
109 #define DTMF_TX_MODE_BELL_202_FSK_1200 0x3000u
110 #define DTMF_TX_MODE_BELL_202_FSK_150 0x2000u
111 #define DTMF_TX_MODE_DTMF_TONES 0x1000u
112 #define DTMF_TX_MODE_DISABLED 0x0000u
113 #define DTMF_TX_MODE_MASK 0xF000u
114 #define DTMF_TX_LEVEL_0_DB 0x0E00u
115 #define DTMF_TX_LEVEL_MIN_1_5_DB 0x0C00u
116 #define DTMF_TX_LEVEL_MIN_3_DB 0x0A00u
117 #define DTMF_TX_LEVEL_MIN_4_5_DB 0x0800u
118 #define DTMF_TX_LEVEL_MIN_6_DB 0x0600u
119 #define DTMF_TX_LEVEL_MIN_7_5_DB 0x0400u
120 #define DTMF_TX_LEVEL_MIN_9_DB 0x0200u
121 #define DTMF_TX_LEVEL_MIN_10_5_DB 0x0000u
122 #define DTMF_TX_LEVEL_MASK 0x0E00u
123 #define DTMF_TX_DTMF_TWIST_2_DB 0x00E0u
124 #define DTMF_TX_DTMF_TWIST_1_DB 0x00C0u
125 #define DTMF_TX_DTMF_TWIST_1_5_DB 0x00A0u
126 #define DTMF_TX_DTMF_TWIST_2_5_DB 0x0080u
127 #define DTMF_TX_DTMF_TWIST_3_DB 0x0060u
128 #define DTMF_TX_DTMF_TWIST_3_5_DB 0x0040u
129 #define DTMF_TX_DTMF_TWIST_4_DB 0x0020u
130 #define DTMF_TX_DTMF_TWIST_4_5_DB 0x0000u
131 #define DTMF_TX_DTMF_TWIST_MASK 0x00E0u
132 #define DTMF_TX_DATA_FORMAT_SYNC 0x0018u
133 #define DTMF_TX_DATA_FORMAT_SS_NO_PAR 0x0010u
134 #define DTMF_TX_DATA_FORMAT_SS_EVEN_PAR 0x0008u
135 #define DTMF_TX_DATA_FORMAT_SS_ODD_PAR 0x0000u
136 #define DTMF_TX_DATA_FORMAT_MASK 0x0018u
137 #define DTMF_TX_DATA_STOP_8_2 0x0007u
138 #define DTMF_TX_DATA_STOP_8_1 0x0006u
139 #define DTMF_TX_DATA_STOP_7_2 0x0005u
140 #define DTMF_TX_DATA_STOP_7_1 0x0004u
141 #define DTMF_TX_DATA_STOP_6_2 0x0003u
142 #define DTMF_TX_DATA_STOP_6_1 0x0002u
143 #define DTMF_TX_DATA_STOP_5_2 0x0001u
144 #define DTMF_TX_DATA_STOP_5_1 0x0000u
145 #define DTMF_TX_DATA_STOP_MASK 0x0007u
146 #define DTMF_TX_DATA_SOURCE_TX_BUF 0x0004u
147 #define DTMF_TX_DATA_SOURCE_CONT_1S 0x0003u
148 #define DTMF_TX_DATA_SOURCE_CONT_0S 0x0002u
149 #define DTMF_TX_DATA_SOURCE_CONT_ALT 0x0000u
150 #define DTMF_TX_DATA_SOURCE_MASK 0x0007u
151 #define DTMF_TX_TONE_FIXED_NO_TONE 0x0000u
152 #define DTMF_TX_TONE_FIXED_PAIR_697 0x0001u
153 #define DTMF_TX_TONE_FIXED_PAIR_770 0x0002u
154 #define DTMF_TX_TONE_FIXED_PAIR_852 0x0003u
155 #define DTMF_TX_TONE_FIXED_PAIR_941 0x0004u
156 #define DTMF_TX_TONE_FIXED_PAIR_1209 0x0005u
157 #define DTMF_TX_TONE_FIXED_PAIR_1336 0x0006u
158 #define DTMF_TX_TONE_FIXED_PAIR_1477 0x0007u
159 #define DTMF_TX_TONE_FIXED_PAIR_1633 0x0008u
160 #define DTMF_TX_TONE_FIXED_PAIR_1300 0x0009u
161 #define DTMF_TX_TONE_FIXED_PAIR_2100 0x000Au
162 #define DTMF_TX_TONE_FIXED_PAIR_2225 0x000Bu
163 #define DTMF_TX_TONE_FIXED_PAIR_TA 0x000Cu
164 #define DTMF_TX_TONE_FIXED_PAIR_TB 0x000Du
165 #define DTMF_TX_TONE_FIXED_PAIR_TC 0x000Eu
166 #define DTMF_TX_TONE_FIXED_PAIR_TD 0x000Fu
167 #define DTMF_TX_TONE_D 0x0010u
168 #define DTMF_TX_TONE_1 0x0011u
169 #define DTMF_TX_TONE_2 0x0012u
170 #define DTMF_TX_TONE_3 0x0013u
171 #define DTMF_TX_TONE_4 0x0014u
172 #define DTMF_TX_TONE_5 0x0015u
173 #define DTMF_TX_TONE_6 0x0016u
174 #define DTMF_TX_TONE_7 0x0017u
175 #define DTMF_TX_TONE_8 0x0018u
176 #define DTMF_TX_TONE_9 0x0019u
177 #define DTMF_TX_TONE_0 0x001Au
178 #define DTMF_TX_TONE_STAR 0x001Bu
179 #define DTMF_TX_TONE_HASH 0x001Cu
180 #define DTMF_TX_TONE_A 0x001Du
181 #define DTMF_TX_TONE_B 0x001Eu
182 #define DTMF_TX_TONE_C 0x001Fu
183 #define DTMF_TX_TONE_MASK 0x001Fu
184 
189 #define DTMF_RX_MODE_V21_FSK_HIGH 0x9000u
190 #define DTMF_RX_MODE_V21_FSK_LOW 0x8000u
191 #define DTMF_RX_MODE_BELL_103_FSK_HIGH 0x7000u
192 #define DTMF_RX_MODE_BELL_103_FSK_LOW 0x6000u
193 #define DTMF_RX_MODE_V23_FSK_1200 0x5000u
194 #define DTMF_RX_MODE_V23_FSK_75 0x4000u
195 #define DTMF_RX_MODE_BELL_202_FSK_1200 0x3000u
196 #define DTMF_RX_MODE_BELL_202_FSK_150 0x2000u
197 #define DTMF_RX_MODE_DTMF_TONES 0x1000u
198 #define DTMF_RX_MODE_DISABLED 0x0000u
199 #define DTMF_RX_MODE_MASK 0xF000u
200 #define DTMF_RX_LEVEL_0_DB 0x0E00u
201 #define DTMF_RX_LEVEL_MIN_1_5_DB 0x0C00u
202 #define DTMF_RX_LEVEL_MIN_3_DB 0x0A00u
203 #define DTMF_RX_LEVEL_MIN_4_5_DB 0x0800u
204 #define DTMF_RX_LEVEL_MIN_6_DB 0x0600u
205 #define DTMF_RX_LEVEL_MIN_7_5_DB 0x0400u
206 #define DTMF_RX_LEVEL_MIN_9_DB 0x0200u
207 #define DTMF_RX_LEVEL_MIN_10_5_DB 0x0000u
208 #define DTMF_RX_LEVEL_MASK 0x0E00u
209 #define DTMF_RX_USART_SYNC 0x0038u
210 #define DTMF_RX_USART_START_STOP 0x0030u
211 #define DTMF_RX_USART_DISABLED 0x0000u
212 #define DTMF_RX_USART_MASK 0x0038u
213 #define DTMF_RX_DATA_PARITY_8_PAR 0x0007u
214 #define DTMF_RX_DATA_PARITY_8_NO_PAR 0x0006u
215 #define DTMF_RX_DATA_PARITY_7_PAR 0x0005u
216 #define DTMF_RX_DATA_PARITY_7_NO_PAR 0x0004u
217 #define DTMF_RX_DATA_PARITY_6_PAR 0x0003u
218 #define DTMF_RX_DATA_PARITY_6_NO_PAR 0x0002u
219 #define DTMF_RX_DATA_PARITY_5_PAR 0x0001u
220 #define DTMF_RX_DATA_PARITY_5_NO_PAR 0x0000u
221 #define DTMF_RX_DATA_PARITY_MASK 0x0007u
222 #define DTMF_RX_TONE_DETECT_PROG_PAIR 0x0004u
223 #define DTMF_RX_TONE_DETECT_CALL_PROG 0x0003u
224 #define DTMF_RX_TONE_DETECT_ANSWER 0x0002u
225 #define DTMF_RX_TONE_DETECT_DTMF 0x0001u
226 #define DTMF_RX_TONE_DETECT_DISABLE 0x0007u
227 #define DTMF_RX_TONE_DETECT_MASK 0x0007u
228 
233 #define DTMF_STATUS_IRQ 0x8000u
234 #define DTMF_STATUS_PROG_FLAG 0x2000u
235 #define DTMF_STATUS_TX_READY 0x1000u
236 #define DTMF_STATUS_TX_UNDERFLOW 0x0800u
237 #define DTMF_STATUS_ENERGY_RX_CP 0x0400u
238 #define DTMF_STATUS_1010_PATTERN 0x0200u
239 #define DTMF_STATUS_CONT_0S 0x0100u
240 #define DTMF_STATUS_CONT_1S 0x0080u
241 #define DTMF_STATUS_RX_READY 0x0040u
242 #define DTMF_STATUS_RX_OVERFLOW 0x0020u
243 #define DTMF_STATUS_RX_FRAMING_ERROR 0x0010u
244 #define DTMF_STATUS_RX_EVEN_PARITY 0x0008u
245 #define DTMF_STATUS_FSK_OUT 0x0001u
246 #define DTMF_STATUS_TONE_D 0x0000u
247 #define DTMF_STATUS_TONE_1 0x0001u
248 #define DTMF_STATUS_TONE_2 0x0002u
249 #define DTMF_STATUS_TONE_3 0x0003u
250 #define DTMF_STATUS_TONE_4 0x0004u
251 #define DTMF_STATUS_TONE_5 0x0005u
252 #define DTMF_STATUS_TONE_6 0x0006u
253 #define DTMF_STATUS_TONE_7 0x0007u
254 #define DTMF_STATUS_TONE_8 0x0008u
255 #define DTMF_STATUS_TONE_9 0x0009u
256 #define DTMF_STATUS_TONE_0 0x000Au
257 #define DTMF_STATUS_TONE_STAR 0x000Bu
258 #define DTMF_STATUS_TONE_HASH 0x000Cu
259 #define DTMF_STATUS_TONE_A 0x000Du
260 #define DTMF_STATUS_TONE_B 0x000Eu
261 #define DTMF_STATUS_TONE_C 0x000Fu
262 #define DTMF_STATUS_TONE_MASK 0x000Fu
263 
268 #define DTMF_TIMEOUT_CLEAR_IRQ 2000u
269 #define DTMF_TIMEOUT_TX_READY 2000u
270 #define DTMF_TIMEOUT_CALL_PROGRESS 60000u
271 #define DTMF_TIMING_BUSY 50u
272 #define DTMF_TIMING_DISCONNECTED 250u
273 #define DTMF_TIMING_RINGING 2000u
274 #define DTMF_TIMING_CALL_PROGRESS 6000u
275 #define DTMF_TIMING_SEND_MESSAGE 2000u
276 #define DTMF_TIMING_RX_READY 10u
277 #define DTMF_TIMING_WAIT_FOR_MESSAGE 10000u
278 
283 #define DTMF_STATE_IDLE 0
284 #define DTMF_STATE_IRQ_SET 1
285 #define DTMF_STATE_RINGING 2
286 #define DTMF_STATE_CALL_IN_PROGRESS 3
287 
292 #define DTMF_DIAL_NUMBER_MAX_LEN 16
293 
302 #define DTMF_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
303 #define DTMF_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
304  // dtmf_set
306 
321 #define DTMF_MAP_MIKROBUS( cfg, mikrobus ) \
322  cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
323  cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
324  cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
325  cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
326  cfg.rdn = MIKROBUS( mikrobus, MIKROBUS_AN ); \
327  cfg.hsw = MIKROBUS( mikrobus, MIKROBUS_RST ); \
328  cfg.irq = MIKROBUS( mikrobus, MIKROBUS_INT )
329  // dtmf_map // dtmf
332 
337 typedef struct
338 {
339  // Output pins
340  digital_out_t hsw;
342  // Input pins
343  digital_in_t rdn;
344  digital_in_t irq;
346  // Modules
347  spi_master_t spi;
349  pin_name_t chip_select;
351  uint16_t control;
352  uint16_t tx_mode;
353  uint16_t rx_mode;
354  uint16_t status;
356 } dtmf_t;
357 
362 typedef struct
363 {
364  // Communication gpio pins
365  pin_name_t miso;
366  pin_name_t mosi;
367  pin_name_t sck;
368  pin_name_t cs;
370  // Additional gpio pins
371  pin_name_t rdn;
372  pin_name_t hsw;
373  pin_name_t irq;
375  // static variable
376  uint32_t spi_speed;
377  spi_master_mode_t spi_mode;
378  spi_master_chip_select_polarity_t cs_polarity;
380 } dtmf_cfg_t;
381 
386 typedef enum
387 {
388  DTMF_OK = 0,
390  DTMF_TIMEOUT = -2
391 
393 
410 
424 err_t dtmf_init ( dtmf_t *ctx, dtmf_cfg_t *cfg );
425 
437 err_t dtmf_general_reset ( dtmf_t *ctx );
438 
452 err_t dtmf_set_control ( dtmf_t *ctx, uint16_t data_in );
453 
465 err_t dtmf_set_transmit_mode ( dtmf_t *ctx, uint16_t data_in );
466 
478 err_t dtmf_set_receive_mode ( dtmf_t *ctx, uint16_t data_in );
479 
494 err_t dtmf_transmit_data ( dtmf_t *ctx, uint8_t data_in );
495 
509 err_t dtmf_receive_data ( dtmf_t *ctx, uint8_t *data_out );
510 
522 err_t dtmf_get_status ( dtmf_t *ctx, uint16_t *data_out );
523 
536 err_t dtmf_set_programming ( dtmf_t *ctx, uint16_t data_in );
537 
547 void dtmf_set_hsw_pin ( dtmf_t *ctx, uint8_t state );
548 
557 void dtmf_hook_off ( dtmf_t *ctx );
558 
567 void dtmf_hook_on ( dtmf_t *ctx );
568 
577 uint8_t dtmf_get_rdn_pin ( dtmf_t *ctx );
578 
587 uint8_t dtmf_get_irq_pin ( dtmf_t *ctx );
588 
598 uint8_t dtmf_tx_ready ( dtmf_t *ctx );
599 
609 uint8_t dtmf_rx_ready ( dtmf_t *ctx );
610 
620 uint8_t dtmf_call_progress ( dtmf_t *ctx );
621 
632 uint8_t dtmf_unscram_1s_det ( dtmf_t *ctx );
633 
645 
657 
669 err_t dtmf_dial ( dtmf_t *ctx, uint8_t *dial_num );
670 
684 err_t dtmf_send_message ( dtmf_t *ctx, uint8_t *data_in, uint8_t len );
685 
686 #ifdef __cplusplus
687 }
688 #endif
689 #endif // DTMF_H
690  // dtmf
692 
693 // ------------------------------------------------------------------------ END
DTMF_TIMEOUT
@ DTMF_TIMEOUT
Definition: dtmf.h:390
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:365
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:366
dtmf_cfg_t::cs_polarity
spi_master_chip_select_polarity_t cs_polarity
Definition: dtmf.h:378
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:347
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:354
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:352
dtmf_return_value_t
dtmf_return_value_t
DTMF Click return value data.
Definition: dtmf.h:387
dtmf_t::chip_select
pin_name_t chip_select
Definition: dtmf.h:349
dtmf_t
DTMF Click context object.
Definition: dtmf.h:338
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:376
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:343
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:373
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:367
dtmf_cfg_t::spi_mode
spi_master_mode_t spi_mode
Definition: dtmf.h:377
dtmf_t::rx_mode
uint16_t rx_mode
Definition: dtmf.h:353
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:368
DTMF_ERROR
@ DTMF_ERROR
Definition: dtmf.h:389
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:340
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:388
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:371
dtmf_cfg_t
DTMF Click configuration object.
Definition: dtmf.h:363
dtmf_cfg_t::hsw
pin_name_t hsw
Definition: dtmf.h:372
dtmf_t::control
uint16_t control
Definition: dtmf.h:351
dtmf_t::irq
digital_in_t irq
Definition: dtmf.h:344
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.