📄 recvsms.h
字号:
#ifndef RECVSMS_H#define RECVSMS_H#include <qobject.h>#include <qstring.h>#include <qdir.h>#include <qfile.h>#include <qtextstream.h>#include <qthread.h>#include <qwaitcondition.h>#include <qmutex.h>#include <qevent.h>#include <qapplication.h>#include "classes.h"#include <iostream>#include <gsmlib/gsm_at.h>#include <gsmlib/gsm_me_ta.h>#include <gsmlib/gsm_event.h>#include <gsmlib/gsm_unix_serial.h>#include <unistd.h>#include <stdio.h>#include <errno.h>#include <stdlib.h>#include <dirent.h>#include <signal.h>#include <fstream>using namespace std;using namespace gsmlib;struct IncomingMessage{ // used if new message is put into store int _index; // -1 means message want send directly string _storeName; // used if SMS message was sent directly to TA SMSMessageRef _newSMSMessage; // used if CB message was sent directly to TA CBMessageRef _newCBMessage; // used in both cases GsmEvent::SMSMessageType _messageType; IncomingMessage() : _index(-1) {}};class EventHandler : public GsmEvent{public: // inherited from GsmEvent void SMSReception(SMSMessageRef newMessage, SMSMessageType messageType); void CBReception(CBMessageRef newMessage); void SMSReceptionIndication(string storeName, unsigned int index, SMSMessageType messageType); virtual ~EventHandler() {}};class RecvThread : public QThread{public: RecvThread(QObject *r, QMutex *m, QWaitCondition *c); void stop(); void run();public: bool enableSMS; bool enableCB; bool enableStat; bool flushSMS; bool onlyReceptionIndication;private: QObject *receiver; QMutex *mutex; QWaitCondition *condition; bool done; private: //struct sigaction terminateAction; void newConnect(); void disConnect(); void flushSMSs(); void newSMSs(); MeTa *me; string serviceCentreAddress; string storeName; };class RecvEvent : public QCustomEvent{public: RecvEvent(QString s) : QCustomEvent(QEvent::User + 100), sz(s) { ; } QString str() const { return sz; }private: QString sz; };class RecvSMS : public QObject{ Q_OBJECTpublic: RecvSMS(); ~RecvSMS(); void kill(); void customEvent(QCustomEvent *);signals: void newMessage(const QString &); void updateStatus(const QString &); void errorOccurred(int status); public slots: void go(); void stop(); protected slots: void errorHandling(int); private: QMutex mutex; QWaitCondition condition; RecvThread *recv; bool stopped;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -