JS8Call-Improved master
Loading...
Searching...
No Matches
Varicode Class Reference

#include <Varicode.h>

Classes

struct  MessageInfo

Public Types

enum  SubmodeType {
  JS8CallNormal = 0 , JS8CallFast = 1 , JS8CallTurbo = 2 , JS8CallSlow = 4 ,
  JS8CallUltra = 8
}
enum  TransmissionType { JS8Call = 0 , JS8CallFirst = 1 , JS8CallLast = 2 , JS8CallData = 4 }
enum  FrameType {
  FrameUnknown = 255 , FrameHeartbeat = 0 , FrameCompound = 1 , FrameCompoundDirected = 2 ,
  FrameDirected = 3 , FrameData = 4 , FrameDataCompressed = 6
}

Static Public Member Functions

static QString frameTypeString (quint8 type)
static SubmodeType intToSubmode (int sm)
static QString extendedChars ()
static QString escape (const QString &text)
static QString unescape (const QString &text)
static QString rstrip (const QString &str)
static QString lstrip (const QString &str)
static QMap< QString, QString > defaultHuffTable ()
static QString cqString (int number)
static QString hbString (int number)
static bool startsWithCQ (QString text)
static bool startsWithHB (QString text)
static QString formatSNR (int snr)
static QString formatPWR (int dbm)
static QString checksum16 (QString const &input)
static bool checksum16Valid (QString const &checksum, QString const &input)
static QString checksum32 (QString const &input)
static bool checksum32Valid (QString const &checksum, QString const &input)
static QStringList parseCallsigns (QString const &input)
static QStringList parseGrids (QString const &input)
static QList< QPair< int, QVector< bool > > > huffEncode (const QMap< QString, QString > &huff, QString const &text)
static QString huffDecode (const QMap< QString, QString > &huff, QVector< bool > const &bitvec)
static QSet< QString > huffValidChars (const QMap< QString, QString > &huff)
static QVector< bool > bytesToBits (char *bitvec, int n)
static QVector< bool > strToBits (QString const &bitvec)
static QString bitsToStr (QVector< bool > const &bitvec)
static QVector< bool > intToBits (quint64 value, int expected=0)
static quint64 bitsToInt (QVector< bool > const value)
static quint64 bitsToInt (QVector< bool >::ConstIterator start, int n)
static QVector< bool > bitsListToBits (QList< QVector< bool > > &list)
static quint8 unpack5bits (QString const &value)
static QString pack5bits (quint8 packed)
static quint8 unpack6bits (QString const &value)
static QString pack6bits (quint8 packed)
static quint16 unpack16bits (QString const &value)
static QString pack16bits (quint16 packed)
static quint32 unpack32bits (QString const &value)
static QString pack32bits (quint32 packed)
static quint64 unpack64bits (QString const &value)
static QString pack64bits (quint64 packed)
static quint64 unpack72bits (QString const &value, quint8 *pRem)
static QString pack72bits (quint64 value, quint8 rem)
static quint32 packAlphaNumeric22 (QString const &value, bool isFlag)
static QString unpackAlphaNumeric22 (quint32 packed, bool *isFlag)
static quint64 packAlphaNumeric50 (QString const &value)
static QString unpackAlphaNumeric50 (quint64 packed)
static quint32 packCallsign (QString const &value, bool *pPortable)
static QString unpackCallsign (quint32 value, bool portable)
static QString deg2grid (float dlong, float dlat)
static QPair< float, float > grid2deg (QString const &grid)
static quint16 packGrid (QString const &value)
static QString unpackGrid (quint16 value)
static quint8 packNum (QString const &num, bool *ok)
static quint8 packPwr (QString const &pwr, bool *ok)
static quint8 packCmd (quint8 cmd, quint8 num, bool *pPackedNum)
static quint8 unpackCmd (quint8 value, quint8 *pNum)
static bool isSNRCommand (const QString &cmd)
static bool isCommandAllowed (const QString &cmd)
static bool isCommandBuffered (const QString &cmd)
static int isCommandChecksumed (const QString &cmd)
static bool isCommandAutoreply (const QString &cmd)
static bool isValidCallsign (const QString &callsign, bool *pIsCompound)
static bool isCompoundCallsign (const QString &callsign)
static bool isGroupAllowed (const QString &group)
static QString packHeartbeatMessage (QString const &text, QString const &callsign, int *n)
static QStringList unpackHeartbeatMessage (const QString &text, quint8 *pType, bool *isAlt, quint8 *pBits3)
static QString packCompoundMessage (QString const &text, int *n)
static QStringList unpackCompoundMessage (const QString &text, quint8 *pType, quint8 *pBits3)
static QString packCompoundFrame (const QString &callsign, quint8 type, quint16 num, quint8 bits3)
static QStringList unpackCompoundFrame (const QString &text, quint8 *pType, quint16 *pNum, quint8 *pBits3)
static QString packDirectedMessage (QString const &text, QString const &mycall, QString *pTo, bool *pToCompound, QString *pCmd, QString *pNum, int *n)
static QStringList unpackDirectedMessage (QString const &text, quint8 *pType)
static QString packDataMessage (QString const &text, int *n)
static QString unpackDataMessage (QString const &text)
static QString packFastDataMessage (QString const &text, int *n)
static QString unpackFastDataMessage (QString const &text)
static QList< QPair< QString, int > > buildMessageFrames (QString const &mycall, QString const &mygrid, QString const &selectedCall, QString const &text, bool forceIdentify, bool forceData, int submode, MessageInfo *pInfo=nullptr)

Static Public Attributes

static const quint8 FrameTypeMax = 6

Detailed Description

(C) 2018 Jordan Sherer kn4cr.nosp@m.d@gm.nosp@m.ail.c.nosp@m.om - All Rights Reserved

Member Function Documentation

◆ buildMessageFrames()

QList< QPair< QString, int > > Varicode::buildMessageFrames ( QString const & mycall,
QString const & mygrid,
QString const & selectedCall,
QString const & text,
bool forceIdentify,
bool forceData,
int submode,
MessageInfo * pInfo = nullptr )
static

We have a few special cases when we are sending to a compound call, or our call is a compound call, or both. CASE 0: Non-compound: KN4CRD: J1Y ACK -> One standard directed message frame

CASE 1: Compound From: KN4CRD/P: J1Y ACK -> One standard compound frame, followed by a standard directed message frame with placeholder -> The second standard directed frame could be replaced with a compound directed frame -> <KN4CRD/P EM73> then <....>: J1Y ACK -> <KN4CRD/P EM73> then <J1Y ACK>

CASE 2: Compound To: KN4CRD: J1Y/P ACK -> One standard compound frame, followed by a compound directed frame -> <KN4CRD EM73> then <J1Y/P ACK>

CASE 3: Compound From & To: KN4CRD/P: J1Y/P ACK -> One standard compound frame, followed by a compound directed frame -> <KN4CRD/P EM73> then <J1Y/P ACK>


The documentation for this class was generated from the following files: