<p> Attention is currently required from: Joshua Colp, Sarah Autumn, George Joseph. </p>
<p><a href="https://gerrit.asterisk.org/c/asterisk/+/16080">View Change</a></p><p>6 comments:</p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0;"><p><a href="null">File apps/app_sendmf.c:</a></p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.asterisk.org/c/asterisk/+/16080/comment/2559fc73_bc27ef2f">Patch Set #4, Line 91:</a> </p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;"><pre style="font-family: monospace,monospace; white-space: pre-wrap;">                     <parameter name="Receive" required="false"><br>                         <para>Emulate receiving MF on this channel instead of sending it out.</para><br>                      </parameter><br></pre></blockquote></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">You didn't implement this (which is fine) but don't you want to add the interval, KP and ST duration […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Done</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.asterisk.org/c/asterisk/+/16080/comment/bae1a13e_0387bc83">Patch Set #4, Line 158:</a> </p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;"><pre style="font-family: monospace,monospace; white-space: pre-wrap;">static int senddigit_mf(struct ast_channel *chan, char digit, unsigned int duration, unsigned int durationkp, unsigned int durationst)<br>{<br> if (duration < DEFAULT_EMULATE_MF_DURATION) {<br>              duration = DEFAULT_EMULATE_MF_DURATION;<br>       }<br>     if (ast_channel_tech(chan)->send_digit_begin) {<br>            if (digit == '*')<br>                     duration = durationkp;<br>                else if (digit == '#' || digit == 'A' || digit == 'B' || digit == 'C')<br>                        duration = durationst;<br>                senddigit_mf_begin(chan, digit);<br>              ast_safe_sleep(chan, duration);<br>       }<br>     return senddigit_mf_end(chan);<br>}<br><br>static int senddigit_external_mf(struct ast_channel *chan, char digit, unsigned int duration,<br>    unsigned int durationkp, unsigned int durationst)<br>{<br>  if (duration < DEFAULT_EMULATE_MF_DURATION) {<br>              duration = DEFAULT_EMULATE_MF_DURATION;<br>       }<br>     if (ast_channel_tech(chan)->send_digit_begin) {<br>            senddigit_mf_begin(chan, digit);<br>              if (digit == '*')<br>                     duration = durationkp;<br>                else if (digit == '#' || digit == 'A' || digit == 'B' || digit == 'C')<br>                        duration = durationst;<br>                usleep(duration * 1000);<br>      }<br>     return senddigit_mf_end(chan);<br>}<br><br></pre></blockquote></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">Since these are private (unlike their DTMF counterparts) and the only difference between them is the […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Done</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.asterisk.org/c/asterisk/+/16080/comment/68cee8f3_c3dd4243">Patch Set #4, Line 191:</a> </p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;"><pre style="font-family: monospace,monospace; white-space: pre-wrap;">static int external_sleep(struct ast_channel *chan, int ms)<br>{<br>   usleep(ms * 1000);<br>    return 0;<br>}<br></pre></blockquote></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">If you move this above senddigit and add the is_internal flag, you can collapse the two senddigit fu […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">I sort of get where this is going but I think I'm missing where the second part would go instead...</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.asterisk.org/c/asterisk/+/16080/comment/cb6324de_005b3b8b">Patch Set #4, Line 204:</a> <code style="font-family:monospace,monospace">    int (*my_senddigit)(struct ast_channel *chan, char digit, unsigned int duration, unsigned int durationkp, unsigned int durationst);</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">You don't need the function pointer stuff if you do the above.</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Done</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.asterisk.org/c/asterisk/+/16080/comment/54d9098d_3031bc14">Patch Set #4, Line 257:</a> </p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;"><pre style="font-family: monospace,monospace; white-space: pre-wrap;">static int mf_stream_digits(struct ast_channel *chan, struct ast_channel *peer, const char *digits, int between, unsigned int duration, unsigned int durationkp, unsigned int durationst)<br>{<br> int res;<br><br>    if (peer && ast_autoservice_start(peer)) {<br>            return -1;<br>    }<br>     res = mf_stream(chan, digits, between, duration, durationkp, durationst, 0);<br>  if (peer && ast_autoservice_stop(peer)) {<br>             res = -1;<br>     }<br><br>   return res;<br>}<br></pre></blockquote></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">Again, since this is private, just collapse with mf_stream.</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Done</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.asterisk.org/c/asterisk/+/16080/comment/360e316a_21988c5c">Patch Set #4, Line 338:</a> <code style="font-family:monospace,monospace">    const char *duration = astman_get_header(m, "Duration");</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">Don't you want to add the interval and other durations?  I know SendDTMF didn't add interval to the  […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">I added the other durations for defaults.<br>Timeout interval I don't think makes sense to add, since the manager action is for one digit at a time.</p></li></ul></li></ul><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/16080">change 16080</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/asterisk/+/16080"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I5d89afdbccee3f86cc702ed96d882f3d351327a4 </div>
<div style="display:none"> Gerrit-Change-Number: 16080 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </div>
<div style="display:none"> Gerrit-Owner: N A <mail@interlinked.x10host.com> </div>
<div style="display:none"> Gerrit-Reviewer: Friendly Automation </div>
<div style="display:none"> Gerrit-Reviewer: George Joseph <gjoseph@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Joshua Colp <jcolp@sangoma.com> </div>
<div style="display:none"> Gerrit-CC: Sarah Autumn <sarah@endlesstemple.org> </div>
<div style="display:none"> Gerrit-Attention: Joshua Colp <jcolp@sangoma.com> </div>
<div style="display:none"> Gerrit-Attention: Sarah Autumn <sarah@endlesstemple.org> </div>
<div style="display:none"> Gerrit-Attention: George Joseph <gjoseph@digium.com> </div>
<div style="display:none"> Gerrit-Comment-Date: Wed, 04 Aug 2021 15:50:33 +0000 </div>
<div style="display:none"> Gerrit-HasComments: Yes </div>
<div style="display:none"> Gerrit-Has-Labels: No </div>
<div style="display:none"> Comment-In-Reply-To: George Joseph <gjoseph@digium.com> </div>
<div style="display:none"> Gerrit-MessageType: comment </div>