Ошибся я, есть там всё. Но он заточен именно под мобильники. А голосовой модем не передаёт определённый номер в формате CLIP, как мобильник.
Короче, есть идея пропатчить.
Открываем файл modem.c, в самом конце есть
if (strstr(buf,"+CLIP:") ...
Я бы это место переписал так:
// Для определителя номера в стандарте сотового телефона
if (strstr(buf,"+CLIP:") && m_status != 4) {
strcpy(tmp,strtok(buf,"\""));
strcpy(number,strtok(NULL,"\""));
m_status=4;
return 101;
}
// Для определителя номера в стандарте модема
if (strstr(buf,"CALLER'S NUMBER:") && m_status != 4) {
strcpy(number,strtok(buf,": "));
m_status=4;
return 101;
}
if (strstr(buf,"ERROR")) { return 1; }
if (strstr(buf,"BUSY")) { return -2; }
if (strstr(buf,"NO DIALTONE")) { return -3; }
if (strstr(buf,"NO CARRIER")) { return -4; }
if (strstr(buf,"RING")) {
if (m_status == 5) {
// В случае если номер не определился, то после
// второго RINGа отвечаем на звонок, номером звонившего ставим 0.
strcpy(number,"0"));
return 101;
}
m_status=5;
return 2;
}
if (strstr(buf,"OK")) { return 1; }
Я это всё не проверял, даже не компилял, нет пока возможности. Возможно нужно будет немного исправить под формат ответа конкретного модема.
Да, и я бы на все эти BUSY, NO DIALTONE, NO CARRIER либо поставил return 1, либо написал корректный обработчик в самом конце miax.c, а то ж вываливаться ж будет если кто-то трубу кинет не вовремя.