On Sun, 29 Jul 2012 18:18:48 -0300, Marcelo Pacheco <marcelo at m2j.com.br> wrote: > Those who looked up the code might have noticed my "Original code" > didn't match libss7. > I changed digit handling code, so inside libss7 I always use 0...9 A...F > digits. #->A and *->B translation happens early coming in, and on the > way back A-># and B->*. The original #/* conversion scheme in libss7 > made it impossible to properly use # in libss7 (due to F being ST > digit). The other change was to expressed the ST digit properly as 'F' > instead of '#', since '#' is now converted to 'A' instead of 'F'. > You are moving the * and # keys to a custom location which may not be recognized from other exchanges. The DTMF keypad is defined as 0-9, A-D, * and #, so (as i have done in https://reviewboard.asterisk.org/r/1653) we have: case 0xa: return 'A'; case 0xb: return 'B'; case 0xc: return 'C'; case 0xd: return 'D'; case 0xe: return '*'; case 0xf: return '#'; # _is_ the ST digit even if you send F to libss7, it will 0xf over the link. If you want to send A that's a different story, but it is not '#'. I have seen some exchanges that threat A (pressed on the phone's keypad) as hook-flash (for transfers) and B for some other functions (DND, call forwarding etc.) maybe that is causing the confusion with # and *, but they are not A and B. > I'm sending this as food for thought for MattF. Those who would like to > pick up the code and use it in production should know exactly what > they're doing. This is not meant as a patch for testing/production usage > at all. > I will add to char2digit() 'f' and 'F' too (like for 0xe), but i think digit2char() should remain as is