/* * scribiu -- read notebooks and voice memos from Livescribe pens * Copyright (C) 2015 Javier S. Pedro * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SMARTPEN_H #define SMARTPEN_H #include #include #include #include #define SMARTPEN_DPI_X (677.3333) #define SMARTPEN_DPI_Y (677.3333) // TODO: These values are mostly random. #define SMARTPEN_BLEED_X 333.3 #define SMARTPEN_BLEED_Y 333.3 class Smartpen : public QObject { Q_OBJECT public: explicit Smartpen(QObject *parent = 0); ~Smartpen(); typedef QPair Address; bool isConnected() const; enum Parameters { PenName = 8011 }; QByteArray getObject(const QString& name); QString getParameter(Parameters parameter); QString getPenName(); QVariantMap getPenInfo(); struct ChangeReport { QString guid; QString className; QString title; }; QList getChangeList(const QDateTime &from = QDateTime()); QByteArray getLspData(const QString &name, const QDateTime &from = QDateTime()); QByteArray getPaperReplay(const QDateTime &from = QDateTime()); static qint64 toPenTime(const QDateTime &dt); static QDateTime fromPenTime(qint64 t); static QString toPenSerial(quint64 id); static quint64 toPenId(const QString &serial); public slots: bool connectToPen(const Address &addr); void disconnectFromPen(); signals: void error(); private: static void obexEventCb(obex_t *handle, obex_object_t *obj, int mode, int event, int obex_cmd, int obex_rsp); void handleObexEvent(obex_object_t *object, int event, int obex_cmd, int obex_rsp); void handleObexRequestDone(obex_object_t *object, int obex_cmd, int obex_rsp); static QString toPenSerialSegment(quint32 id, int len); static quint32 fromPenSerialSegment(const QString &s); static QByteArray encodeUtf16(const QString &s); void addConnHeader(obex_object_t *object) const; private: obex_t * _obex; quint32 _connId; QByteArray _inBuf; }; #endif // SMARTPEN_H