summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/gsmtool/gsmtool.cpp6
1 files changed, 1 insertions, 5 deletions
diff --git a/noncore/unsupported/gsmtool/gsmtool.cpp b/noncore/unsupported/gsmtool/gsmtool.cpp
index 6fea596..e6122ad 100644
--- a/noncore/unsupported/gsmtool/gsmtool.cpp
+++ b/noncore/unsupported/gsmtool/gsmtool.cpp
@@ -98,363 +98,359 @@ void GSMTool::doTabChanged()
timerid = -1;
}
}
void GSMTool::timerEvent( QTimerEvent * )
{
OPInfo opi;
opi = me->getCurrentOPInfo();
if (opi._numericName == NOT_SET) {
NetStatText->setText("No network");
NetworkLabel->setEnabled(FALSE);
NetworkText->setEnabled(FALSE);
NetworkText->setText("");
SigStrText->setEnabled(FALSE);
SigStrText->setText("");
dB->setEnabled(FALSE);
SigStrLabel->setEnabled(FALSE);
} else {
// FIXME: Add 'roaming' info from AT+CFUN
qDebug("network");
NetStatText->setText("Registered");
NetworkLabel->setEnabled(TRUE);
NetworkText->setEnabled(TRUE);
NetworkText->setText(opi._longName.c_str());
SigStrText->setEnabled(TRUE);
qDebug("get sig str");
int csq = me->getSignalStrength();
if (csq == 0) {
SigStrText->setText("<= -113");
dB->setEnabled(TRUE);
SigStrLabel->setEnabled(TRUE);
} else if (csq == 99) {
SigStrText->setText("Unknown");
dB->setEnabled(FALSE);
SigStrLabel->setEnabled(FALSE);
} else {
char buf[6];
sprintf(buf, "%d", -113 + (2*csq));
SigStrText->setText(buf);
dB->setEnabled(TRUE);
SigStrLabel->setEnabled(TRUE);
}
}
}
void GSMTool::doSMSStoreChanged()
{
const char *storename = SMSStoreList->currentText().ascii();
qDebug("Store Changed to '%s'", storename);
if (!strcmp(storename, "None")) {
sms_store = NULL;
} else try {
sms_store = new SortedSMSStore(me->getSMSStore(storename));
sms_store->setSortOrder(ByIndex);
qDebug("got store of size %d", sms_store->size());
} catch (GsmException) {
sms_store = NULL;
qDebug("get store failed");
}
SMSList->setEnabled(!(sms_store == NULL));
NewSMSSaveButton->setEnabled(!(sms_store == NULL));
doSMSTypeChanged();
}
void GSMTool::doSMSTypeChanged()
{
int direction = SMSViewType->currentItem();
qDebug("direction %s\n", direction?"outgoing":"incoming");
if (direction)
SMSSendButton->setText("Send");
else
SMSSendButton->setText("Reply");
SMSList->clear();
doSelectedSMSChanged(NULL);
if (sms_store == NULL)
return;
for (SortedSMSStore::iterator e = sms_store->begin();
e != sms_store->end(); e++) {
// qDebug("Message %d", i);
qDebug("Is%sempty", e->empty()?" ":" not ");
if (e->empty())
continue;
qDebug("Status %d", e->status());
SMSMessageRef message = e->message();
qDebug("Got message.");
// qDebug(message->toString().c_str());
if (direction == message->messageType()) {
qDebug("yes\n");
char buf[3];
snprintf(buf, 3, "%d", e->index());
new QListViewItem(SMSList, message->address()._number.c_str(), message->serviceCentreTimestamp().toString().c_str(), buf);
}
}
}
void GSMTool::doSelectedSMSChanged(QListViewItem *item)
{
qDebug("message changed\n");
if (!item || sms_store == NULL) {
SMSText->setText("");
SMSText->setEnabled(FALSE);
SMSDeleteButton->setEnabled(FALSE);
SMSSendButton->setEnabled(FALSE);
return;
}
/* ARGH. This sucks. Surely there's an app-private pointer in the
QListViewItem that I've failed to notice?
SMSMessageRef message = *(SMSMessageRef*)item->private;
*/
qDebug("item %p\n", item);
qDebug("text(2) is %s\n", item->text(2).ascii());
int index = atoi(item->text(2).ascii());
qDebug("index %d\n", index);
SMSMessageRef message = sms_store->find(index)->message();
SMSText->setText(message->userData().c_str());
SMSText->setEnabled(TRUE);
SMSDeleteButton->setEnabled(TRUE);
SMSSendButton->setEnabled(TRUE);
}
void GSMTool::doSMSSendButton()
{
qDebug("SMSSendButton");
QListViewItem *item = SMSList->currentItem();
if (!item)
return;
int index = atoi(item->text(2).ascii());
qDebug("index %d\n", index);
int direction = SMSViewType->currentItem();
qDebug("direction %s\n", direction?"outgoing":"incoming");
SMSMessageRef message = sms_store->find(index)->message();
if (direction)
NewSMSText->setText(message->userData().c_str());
else
NewSMSText->setText("");
NewSMSToBox->insertItem(message->address()._number.c_str(), 0);
TabWidget2->setCurrentPage(3);
}
void GSMTool::doNewSMSClearButton()
{
NewSMSText->setText("");
}
void GSMTool::doNewSMSSaveButton()
{
qDebug("NewSMSSaveButton");
const char *msgtext = strdup(NewSMSText->text().local8Bit());
const char *dest = NewSMSToBox->currentText().ascii();
NewSMSStatusLabel->setText("Sending...");
me->setMessageService(1);
qDebug("NewSMSSendButton: '%s' to '%s'", msgtext, dest);
SMSMessageRef m = new SMSSubmitMessage (msgtext, dest);
sms_store->insert(m);
free((void *)msgtext);
}
void GSMTool::doNewSMSSendButton()
{
const char *msgtext = strdup(NewSMSText->text().local8Bit());
const char *dest = NewSMSToBox->currentText().ascii();
NewSMSStatusLabel->setText("Sending...");
me->setMessageService(1);
qDebug("NewSMSSendButton: '%s' to '%s'", msgtext, dest);
SMSSubmitMessage m(msgtext, dest);
try {
- Ref<SMSMessage> ackPDU;
m.setAt(new GsmAt(*me));
- m.send(ackPDU);
+ m.send();
- // print acknowledgement if available
- if (! ackPDU.isnull())
- cout << ackPDU->toString();
NewSMSStatusLabel->setText("Message sent.");
} catch (GsmException &ge) {
NewSMSStatusLabel->setText("Failed.");
qDebug(ge.what());
}
free((void *)msgtext);
}
void GSMTool::doSMSDeleteButton()
{
QListViewItem *item = SMSList->currentItem();
if (!item)
return;
int index = atoi(item->text(2).ascii());
qDebug("delete SMS with index %d\n", index);
SortedSMSStore::iterator e = sms_store->find(index);
if (e != sms_store->end()) {
qDebug("message is %s\n", e->message()->userData().c_str());
sms_store->erase(e);
}
doSMSTypeChanged();
}
void GSMTool::doScanButton()
{
qDebug("ScanButton");
NetworkList->setEnabled(FALSE);
AvailNetsLabel->setEnabled(FALSE);
NetworkList->clear();
new QListViewItem(NetworkList, "Scanning...");
vector<OPInfo> opis;
try {
opis = me->getAvailableOPInfo();
} catch (GsmException) {
NetworkList->clear();
new QListViewItem(NetworkList, "Scan failed...");
return;
}
NetworkList->clear();
for (vector<OPInfo>::iterator i = opis.begin(); i != opis.end(); ++i) {
char *statustext;
switch (i->_status) {
case UnknownOPStatus:
statustext = "unknown";
break;
case CurrentOPStatus:
statustext = "current";
break;
case AvailableOPStatus:
statustext = "available";
break;
case ForbiddenOPStatus:
statustext = "forbidden";
break;
default:
statustext = "(ERROR)";
}
char num[7];
snprintf(num, 6, "%d", i->_numericName);
new QListViewItem(NetworkList, i->_longName.c_str(), statustext, num, i->_shortName.c_str());
}
NetworkList->setEnabled(TRUE);
AvailNetsLabel->setEnabled(TRUE);
}
/*
* A simple slot... not very interesting.
*/
void GSMTool::doConnectButton()
{
gsmlib::Port *port;
speed_t rate;
devicename = strdup(DeviceName->currentText().local8Bit().data());
rate = baudrates[BaudRate->currentItem()];
qDebug("Connect Button Pressed");
MfrText->setText("Opening...");
ModelText->setText("");
RevisionText->setText("");
SerialText->setText("");
setConnected(FALSE);
if (me) {
me = NULL;
}
if (lockDevice()) {
qDebug("lockDevice() failed\n");
MfrText->setText("Lock port failed");
};
qDebug("Device name is %s\n", devicename);
try {
port = new UnixSerialPort(devicename, rate, DEFAULT_INIT_STRING, 0);
} catch (GsmException) {
qDebug("port failed");
MfrText->setText("Open port failed");
return;
}
MfrText->setText("Initialising...");
qDebug("got port");
try {
me = new MeTa(port);
} catch (GsmException) {
qDebug("meta failed");
MfrText->setText("Initialise GSM unit failed");
me = NULL;
unlockDevice();
return;
}
qDebug("Opened");
MEInfo ifo;
MfrText->setText("Querying...");
try {
ifo = me->getMEInfo();
} catch (GsmException) {
qDebug("getMEInfo failed");
MfrText->setText("Query GSM unit failed");
me = NULL;
unlockDevice();
return;
}
MfrText->setText(ifo._manufacturer.c_str());
ModelText->setText(ifo._model.c_str());
RevisionText->setText(ifo._revision.c_str());
SerialText->setText(ifo._serialNumber.c_str());
setConnected(TRUE);
SMSStoreList->clear();
SMSStoreList->insertItem("None");
vector<string> storenames = me->getSMSStoreNames();
for (vector<string>::iterator i = storenames.begin(); i != storenames.end(); ++i) {
SMSStoreList->insertItem(i->c_str());
}
SMSList->clear();
SMSText->setText("");
sms_store = NULL;
}