summaryrefslogtreecommitdiff
authorzecke <zecke>2002-10-24 20:43:25 (UTC)
committer zecke <zecke>2002-10-24 20:43:25 (UTC)
commit81a2bb8073b95d438911a62a7f4d8244ef58e20a (patch) (side-by-side diff)
tree2521c88de626caf818b715776934da204d6b0f8f
parent0fc598a0ee9151f82f5a78383645a758d5f6cad9 (diff)
downloadopie-81a2bb8073b95d438911a62a7f4d8244ef58e20a.zip
opie-81a2bb8073b95d438911a62a7f4d8244ef58e20a.tar.gz
opie-81a2bb8073b95d438911a62a7f4d8244ef58e20a.tar.bz2
Modem is now working
Kindly called from Germany to Switzerland via rfcomm( affix) + Nokia6210 + Vodafone... But now it's working might be a hangup problem somewhere
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/dialer.cpp24
-rw-r--r--noncore/apps/opie-console/io_modem.cpp10
-rw-r--r--noncore/apps/opie-console/io_serial.cpp7
3 files changed, 29 insertions, 12 deletions
diff --git a/noncore/apps/opie-console/dialer.cpp b/noncore/apps/opie-console/dialer.cpp
index ce2b688..8524422 100644
--- a/noncore/apps/opie-console/dialer.cpp
+++ b/noncore/apps/opie-console/dialer.cpp
@@ -80,34 +80,37 @@ Dialer::Dialer(const Profile& profile, int fd, QWidget *parent, const char *name
QTimer::singleShot(500, this, SLOT(slotAutostart()));
}
Dialer::~Dialer()
{
}
void Dialer::setHangupOnly()
{
state = state_cancel;
usercancel = 1;
+ send("+++ATH\r");
}
void Dialer::slotCancel()
{
if(state != state_online)
{
usercancel = 1;
reset();
}
- else accept();
+ else {
+ accept();
+ }
}
void Dialer::reset()
{
qWarning("reset");
switchState(state_cancel);
}
void Dialer::slotAutostart()
{
//state = state_preinit;
dial(m_profile.readEntry("Number"));
@@ -131,27 +134,27 @@ void Dialer::dial(const QString& number)
trydial(QString::null);
reject();
}
}
void Dialer::trydial(const QString& number)
{
qWarning("TryDial:%s", number.latin1() );
if(state != state_cancel) switchState(state_preinit);
if(cleanshutdown)
{
qWarning("HangupString " + m_profile.readEntry("HangupString"));
- send(m_profile.readEntry("HangupString"));
- //send("+++ATH");
- send("");
+ //send(m_profile.readEntry("HangupString"));
+ send("+++ATH\r");
+ //send("");
}
if(state != state_cancel)
{
switchState(state_init);
//send("ATZ");
qWarning("Init String " + m_profile.readEntry("InitString") );
// send(m_profile.readEntry("InitString", "AT"));
send("AT\r");
QString response2 = receive();
if(!response2.contains("\nOK\r"))
reset();
@@ -178,41 +181,43 @@ void Dialer::trydial(const QString& number)
if(!response4.contains("\nOK\r"))
reset();
}
if(state != state_cancel)
{
qWarning("progress");
switchState(state_dialing);
send(QString("ATDT %1\r").arg(number));
// send(QString("%1 %2").arg(m_profile.readEntry("DialPrefix1")).arg(number));
QString response5 = receive();
- if(!response5.contains("\n" + m_profile.readEntry("DefaultConnect")))
+ if(!response5.contains("CONNECT") )
{
if(response5.contains("BUSY"))
switchState(state_dialing);
else
{
QMessageBox::warning(this,
QObject::tr("Failure"),
QObject::tr("Dialing the number failed."));
slotCancel();
}
}
}
+
if(state != state_cancel)
{
- switchState(state_online);
+ state = state_online;
+ slotCancel();
}
}
void Dialer::send(const QString& msg)
{
QString m = msg;
int bytes;
QString termination;
qWarning("Sending: %s", m.latin1());
/* termination = "\r";
@@ -237,32 +242,35 @@ QString Dialer::receive()
int ret;
int counter = 0;
while(1)
{
ret = ::read(m_fd, buffer, sizeof(buffer));
if(ret > 0)
{
for(int i = 0; i < ret; i++)
buffer[i] = buffer[i] & 0x7F;
buffer[ret] = 0;
- //qWarning("Got: '%s'", buffer);
+ qWarning("Got: %s", buffer);
buf.append(QString(buffer));
if(buf.contains("OK") || buf.contains("ERROR") || buf.contains("CONNECT") || (buf.contains("BUSY")))
{
//qWarning("Receiving: '%s'", buf.latin1());
cleanshutdown = 1;
return buf;
- }
+ }else if (buf.contains("NO CARRIER") || buf.contains("NO DIALTONE") ) {
+ cleanshutdown = 1;
+ return QString::null;
+ }
}
else if(ret < 0)
{
if(errno != EAGAIN) reset();
else if(!(counter++ % 100)) qApp->processEvents();
}
else if(!(counter++ % 100)) qApp->processEvents();
if(usercancel) return QString::null;
}
cleanshutdown = 1;
diff --git a/noncore/apps/opie-console/io_modem.cpp b/noncore/apps/opie-console/io_modem.cpp
index b7901b9..896c24f 100644
--- a/noncore/apps/opie-console/io_modem.cpp
+++ b/noncore/apps/opie-console/io_modem.cpp
@@ -7,29 +7,31 @@ IOModem::IOModem( const Profile &profile )
: IOSerial( profile ) {
m_profile = profile;
}
IOModem::~IOModem() {
}
void IOModem::close() {
// Hangup, discarding result
- int fd = rawIO();
- Dialer d(m_profile, fd);
+// int fd = rawIO();
+ internDetach();
+ Dialer d(m_profile, m_fd);
d.setHangupOnly();
- d.exec();
- closeRawIO(fd);
+ //d.exec();
+ internAttach();
+// closeRawIO(fd);
IOSerial::close();
}
bool IOModem::open() {
bool ret = IOSerial::open();
if(!ret) return false;
// int fd = rawIO();
internDetach();
Dialer d(m_profile, m_fd);
diff --git a/noncore/apps/opie-console/io_serial.cpp b/noncore/apps/opie-console/io_serial.cpp
index 0540d9e..03e92dd 100644
--- a/noncore/apps/opie-console/io_serial.cpp
+++ b/noncore/apps/opie-console/io_serial.cpp
@@ -1,17 +1,19 @@
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
#include <unistd.h>
+#include <stdio.h>
+
#include "io_serial.h"
IOSerial::IOSerial(const Profile &config) : IOLayer(config) {
m_read = 0l;
m_error = 0l;
m_fd = 0;
m_connected = false;
reload(config);
}
IOSerial::~IOSerial() {
@@ -155,24 +157,29 @@ void IOSerial::errorOccured() {
emit error(ClosedUnexpected, strerror(errno));
close();
}
void IOSerial::dataArrived() {
QByteArray array(4097);
int len = read(m_fd, array.data(), 4096);
if (len == 0)
close();
if (len < 0)
return;
+ qWarning("got from layer");
+ for (int i = 0; i < len; i++ ) {
+ printf("%c", array[i] );
+ }
+ printf("\n");
array.resize( len );
emit received(array);
}
QString IOSerial::identifier() const {
return "serial";
}
QString IOSerial::name() const {
return "RS232 Serial IO Layer";
}
int IOSerial::rawIO()const {