391 lines
15 KiB
C++
391 lines
15 KiB
C++
/*
|
|
Copyright (C) 2019-2021 Doug McLain
|
|
|
|
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 <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef DROIDSTAR_H
|
|
#define DROIDSTAR_H
|
|
|
|
#include <QObject>
|
|
#include "mode.h"
|
|
|
|
class DroidStar : public QObject
|
|
{
|
|
Q_OBJECT
|
|
//Q_PROPERTY(QString mode READ mode WRITE set_mode NOTIFY mode_changed)
|
|
public:
|
|
explicit DroidStar(QObject *parent = nullptr);
|
|
~DroidStar();
|
|
|
|
signals:
|
|
void input_source_changed(int, QString);
|
|
void mode_changed();
|
|
void module_changed(char);
|
|
void slot_changed(int);
|
|
void cc_changed(int);
|
|
void update_data();
|
|
void update_log(QString);
|
|
void open_vocoder_dialog();
|
|
void update_settings();
|
|
void connect_status_changed(int c);
|
|
void in_audio_vol_changed(qreal);
|
|
void tx_pressed();
|
|
void tx_released();
|
|
void tx_clicked(bool);
|
|
void dmrpc_state_changed(int);
|
|
void dmr_tgid_changed(int);
|
|
void m17_rate_changed(int);
|
|
void m17_can_changed(int);
|
|
void send_dtmf(QByteArray);
|
|
void swtx_state_changed(int);
|
|
void swrx_state_changed(int);
|
|
void swtx_state(int);
|
|
void swrx_state(int);
|
|
void agc_state(int);
|
|
void agc_state_changed(int);
|
|
void rptr1_changed(QString);
|
|
void rptr2_changed(QString);
|
|
void mycall_changed(QString);
|
|
void urcall_changed(QString);
|
|
void usrtxt_changed(QString);
|
|
void dst_changed(QString);
|
|
void debug_changed(bool);
|
|
void update_devices();
|
|
public slots:
|
|
void set_callsign(const QString &callsign) { m_callsign = callsign.simplified(); save_settings(); }
|
|
void set_dmrtgid(const QString &dmrtgid) { m_dmr_destid = dmrtgid.simplified().toUInt(); save_settings(); }
|
|
void set_slot(const int slot) {emit slot_changed(slot); }
|
|
void set_cc(const int cc) {emit cc_changed(cc); }
|
|
void tgid_text_changed(QString s){emit dmr_tgid_changed(s.toUInt());}
|
|
void set_dmrid(const QString &dmrid) { m_dmrid = dmrid.simplified().toUInt(); save_settings(); }
|
|
void set_essid(const QString &essid)
|
|
{
|
|
if (essid != "None") {
|
|
m_essid = essid.simplified().toUInt() + 1;
|
|
save_settings();
|
|
}
|
|
else{
|
|
m_essid = 0;
|
|
}
|
|
}
|
|
void set_bm_password(const QString &bmpwd) { m_bm_password = bmpwd; save_settings(); }
|
|
void set_tgif_password(const QString &tgifpwd) { m_tgif_password = tgifpwd; save_settings(); }
|
|
void set_latitude(const QString &lat){ m_latitude = lat; save_settings(); }
|
|
void set_longitude(const QString &lon){ m_longitude = lon; save_settings(); }
|
|
void set_location(const QString &loc){ m_location = loc; save_settings(); }
|
|
void set_description(const QString &desc){ m_description = desc; save_settings(); }
|
|
void set_freq(const QString &freq){ m_freq = freq; save_settings(); }
|
|
void set_url(const QString &url){ m_url = url; save_settings(); }
|
|
void set_swid(const QString &swid){ m_swid = swid; save_settings(); }
|
|
void set_pkgid(const QString &pkgid){ m_pkgid = pkgid; save_settings(); }
|
|
void set_dmr_options(const QString &dmropts) { m_dmropts = dmropts; save_settings(); }
|
|
void set_dmr_pc(int pc) { m_pc = pc; emit dmrpc_state_changed(m_pc); }
|
|
void set_module(const QString &module) { m_module = module.toStdString()[0]; save_settings(); emit module_changed(m_module);}
|
|
void set_protocol(const QString &protocol) { m_protocol = protocol; save_settings(); }
|
|
void set_input_volume(qreal v);
|
|
void set_modelchange(bool t){ m_modelchange = t; }
|
|
void set_mycall(const QString &mycall) { m_mycall = mycall; save_settings(); emit mycall_changed(mycall); }
|
|
void set_urcall(const QString &urcall) { m_urcall = urcall; save_settings(); emit urcall_changed(urcall); }
|
|
void set_rptr1(const QString &rptr1) { m_rptr1 = rptr1; save_settings(); emit rptr1_changed(rptr1); qDebug() << "rpt1 == " << m_rptr1; }
|
|
void set_rptr2(const QString &rptr2) { m_rptr2 = rptr2; save_settings(); emit rptr2_changed(rptr2); qDebug() << "rpt2 == " << m_rptr2; }
|
|
void set_usrtxt(const QString &usrtxt) { m_dstarusertxt = usrtxt; save_settings(); emit usrtxt_changed(usrtxt); }
|
|
void set_txtimeout(const QString &t) { m_txtimeout = t.simplified().toUInt(); save_settings();}
|
|
void set_toggletx(bool x) { m_toggletx = x; save_settings(); }
|
|
void set_xrf2ref(bool x) { m_xrf2ref = x; save_settings(); }
|
|
void set_ipv6(bool ipv6) { m_ipv6 = ipv6; save_settings(); }
|
|
void set_vocoder(QString vocoder) { m_vocoder = vocoder; }
|
|
void set_modem(QString modem) { m_modem = modem; }
|
|
void set_playback(QString playback) { m_playback = playback; }
|
|
void set_capture(QString capture) { m_capture = capture; }
|
|
void set_swtx(bool swtx) { emit swtx_state_changed(swtx); }
|
|
void set_swrx(bool swrx) { emit swrx_state_changed(swrx); }
|
|
void set_agc(bool agc) { emit agc_state_changed(agc); }
|
|
void set_mmdvm_direct(bool mmdvm) { m_mdirect = mmdvm; process_mode_change(m_protocol); }
|
|
void set_iaxport(const QString &port){ m_iaxport = port.simplified().toUInt(); save_settings(); }
|
|
void set_dst(QString dst){emit dst_changed(dst);}
|
|
void set_debug(bool debug){emit debug_changed(debug);}
|
|
|
|
void set_modemRxFreq(QString m) { m_modemRxFreq = m; save_settings(); }
|
|
void set_modemTxFreq(QString m) { m_modemTxFreq = m; save_settings(); }
|
|
void set_modemRxOffset(QString m) { m_modemRxOffset = m; save_settings(); }
|
|
void set_modemTxOffset(QString m) { m_modemTxOffset = m; save_settings(); }
|
|
void set_modemRxDCOffset(QString m) { m_modemRxDCOffset = m; save_settings(); }
|
|
void set_modemTxDCOffset(QString m) { m_modemTxDCOffset = m; save_settings(); }
|
|
void set_modemRxLevel(QString m) { m_modemRxLevel = m; save_settings(); }
|
|
void set_modemTxLevel(QString m) { m_modemTxLevel = m; save_settings(); }
|
|
void set_modemRFLevel(QString m) { m_modemRFLevel = m; save_settings(); }
|
|
void set_modemTxDelay(QString m) { m_modemTxDelay = m; save_settings(); }
|
|
void set_modemCWIdTxLevel(QString m) { m_modemCWIdTxLevel = m; save_settings(); }
|
|
void set_modemDstarTxLevel(QString m) { m_modemDstarTxLevel = m; save_settings(); }
|
|
void set_modemDMRTxLevel(QString m) { m_modemDMRTxLevel = m; save_settings(); }
|
|
void set_modemYSFTxLevel(QString m) { m_modemYSFTxLevel = m; save_settings(); }
|
|
void set_modemP25TxLevel(QString m) { m_modemP25TxLevel = m; save_settings(); }
|
|
void set_modemNXDNTxLevel(QString m) { m_modemNXDNTxLevel = m; save_settings(); }
|
|
void set_modemBaud(QString m) { m_modemBaud = m; save_settings(); }
|
|
void set_modemM17CAN(QString m) { emit m17_can_changed(m.toInt()); }
|
|
|
|
void m17_rate_changed(bool r) { emit m17_rate_changed((int)r); }
|
|
void process_connect();
|
|
void press_tx();
|
|
void release_tx();
|
|
void click_tx(bool);
|
|
void process_settings();
|
|
void check_host_files();
|
|
void update_host_files();
|
|
void update_custom_hosts(QString);
|
|
void update_dmr_ids();
|
|
void update_nxdn_ids();
|
|
void process_mode_change(const QString &m);
|
|
void process_host_change(const QString &h);
|
|
void dtmf_send_clicked(QString);
|
|
bool get_modelchange(){ return m_modelchange; }
|
|
QString get_label1() { return m_label1; }
|
|
QString get_label2() { return m_label2; }
|
|
QString get_label3() { return m_label3; }
|
|
QString get_label4() { return m_label4; }
|
|
QString get_label5() { return m_label5; }
|
|
QString get_label6() { return m_label6; }
|
|
QString get_data1() { return m_data1; }
|
|
QString get_data2() { return m_data2; }
|
|
QString get_data3() { return m_data3; }
|
|
QString get_data4() { return m_data4; }
|
|
QString get_data5() { return m_data5; }
|
|
QString get_data6() { return m_data6; }
|
|
QString get_ambestatustxt() { return m_ambestatustxt; }
|
|
QString get_mmdvmstatustxt() { return m_mmdvmstatustxt; }
|
|
QString get_netstatustxt() { return m_netstatustxt; }
|
|
QString get_mode() { return m_protocol; }
|
|
QString get_host() { return m_host; }
|
|
QString get_module() { return QString(m_module); }
|
|
QString get_callsign() { return m_callsign; }
|
|
QString get_dmrid() { return m_dmrid ? QString::number(m_dmrid) : ""; }
|
|
QString get_essid() { return m_essid ? QString("%1").arg(m_essid - 1, 2, 10, QChar('0')) : "None"; }
|
|
QString get_bm_password() { return m_bm_password; }
|
|
QString get_tgif_password() { return m_tgif_password; }
|
|
QString get_latitude() { return m_latitude; }
|
|
QString get_longitude() { return m_longitude; }
|
|
QString get_location() { return m_location; }
|
|
QString get_description() { return m_description; }
|
|
QString get_freq() { return m_freq; }
|
|
QString get_url() { return m_url; }
|
|
QString get_swid() { return m_swid; }
|
|
QString get_pkgid() { return m_pkgid; }
|
|
QString get_dmr_options() { return m_dmropts; }
|
|
QString get_dmrtgid() { return m_dmr_destid ? QString::number(m_dmr_destid) : ""; }
|
|
QStringList get_hosts() { return m_hostsmodel; }
|
|
QString get_ref_host() { return m_saved_refhost; }
|
|
QString get_dcs_host() { return m_saved_dcshost; }
|
|
QString get_xrf_host() { return m_saved_xrfhost; }
|
|
QString get_ysf_host() { return m_saved_ysfhost; }
|
|
QString get_fcs_host() { return m_saved_fcshost; }
|
|
QString get_dmr_host() { return m_saved_dmrhost; }
|
|
QString get_p25_host() { return m_saved_p25host; }
|
|
QString get_nxdn_host() { return m_saved_nxdnhost; }
|
|
QString get_m17_host() { return m_saved_m17host; }
|
|
QString get_iax_host() { return m_saved_iaxhost; }
|
|
QString get_mycall() { return m_mycall; }
|
|
QString get_urcall() { return m_urcall; }
|
|
QString get_rptr1() { return m_rptr1; }
|
|
QString get_rptr2() { return m_rptr2; }
|
|
QString get_txtimeout() { return QString::number(m_txtimeout); }
|
|
QString get_error_text() { return m_errortxt; }
|
|
bool get_toggletx() { return m_toggletx; }
|
|
bool get_ipv6() { return m_ipv6; }
|
|
bool get_xrf2ref() { return m_xrf2ref; }
|
|
QString get_local_hosts(){ return m_localhosts; }
|
|
QStringList get_vocoders() { return m_vocoders; }
|
|
QStringList get_modems() { return m_modems; }
|
|
QStringList get_playbacks() { return m_playbacks; }
|
|
QStringList get_captures() { return m_captures; }
|
|
QString get_modemRxFreq() { return m_modemRxFreq; }
|
|
QString get_modemTxFreq() { return m_modemTxFreq; }
|
|
QString get_modemRxOffset() { return m_modemRxOffset; }
|
|
QString get_modemTxOffset() { return m_modemTxOffset; }
|
|
QString get_modemRxDCOffset() { return m_modemRxDCOffset; }
|
|
QString get_modemTxDCOffset() { return m_modemTxDCOffset; }
|
|
QString get_modemRxLevel() { return m_modemRxLevel; }
|
|
QString get_modemTxLevel() { return m_modemTxLevel; }
|
|
QString get_modemRFLevel() { return m_modemRFLevel; }
|
|
QString get_modemTxDelay() { return m_modemTxDelay; }
|
|
QString get_modemCWIdTxLevel() { return m_modemCWIdTxLevel; }
|
|
QString get_modemDstarTxLevel() { return m_modemDstarTxLevel; }
|
|
QString get_modemDMRTxLevel() { return m_modemDMRTxLevel; }
|
|
QString get_modemYSFTxLevel() { return m_modemYSFTxLevel; }
|
|
QString get_modemP25TxLevel() { return m_modemP25TxLevel; }
|
|
QString get_modemNXDNTxLevel() { return m_modemNXDNTxLevel; }
|
|
QString get_modemBaud() { return m_modemBaud; }
|
|
QString get_modemM17CAN() { return m_modemM17CAN; }
|
|
#if defined(Q_OS_ANDROID)
|
|
QString get_platform() { return QSysInfo::productType(); }
|
|
void reset_connect_status();
|
|
QString get_monofont() { return "Droid Sans Mono"; }
|
|
#elif defined(Q_OS_WIN)
|
|
QString get_platform() { return QSysInfo::kernelType(); }
|
|
void reset_connect_status() {}
|
|
QString get_monofont() { return "Courier"; }
|
|
#else
|
|
QString get_platform() { return QSysInfo::kernelType(); }
|
|
void reset_connect_status() {}
|
|
QString get_monofont() { return "monospace"; }
|
|
#endif
|
|
QString get_arch() { return QSysInfo::currentCpuArchitecture(); }
|
|
QString get_build_abi() { return QSysInfo::buildAbi(); }
|
|
QString get_software_build() { return VERSION_NUMBER; }
|
|
|
|
void download_file(QString, bool u = false);
|
|
void file_downloaded(QString);
|
|
void url_downloaded(QString);
|
|
unsigned short get_output_level(){ return m_outlevel; }
|
|
void set_output_level(unsigned short l){ m_outlevel = l; }
|
|
void tts_changed(QString);
|
|
void tts_text_changed(QString);
|
|
private:
|
|
int connect_status;
|
|
bool m_update_host_files;
|
|
QSettings *m_settings;
|
|
QString config_path;
|
|
QString hosts_filename;
|
|
QString m_callsign;
|
|
QString m_host;
|
|
QString m_refname;
|
|
QString m_protocol;
|
|
QString m_bm_password;
|
|
QString m_tgif_password;
|
|
QString m_latitude;
|
|
QString m_longitude;
|
|
QString m_location;
|
|
QString m_description;
|
|
QString m_freq;
|
|
QString m_url;
|
|
QString m_swid;
|
|
QString m_pkgid;
|
|
QString m_dmropts;
|
|
int m_pc;
|
|
QString m_saved_refhost;
|
|
QString m_saved_dcshost;
|
|
QString m_saved_xrfhost;
|
|
QString m_saved_ysfhost;
|
|
QString m_saved_fcshost;
|
|
QString m_saved_dmrhost;
|
|
QString m_saved_p25host;
|
|
QString m_saved_nxdnhost;
|
|
QString m_saved_m17host;
|
|
QString m_saved_iaxhost;
|
|
uint32_t m_dmrid;
|
|
uint8_t m_essid;
|
|
uint32_t m_dmr_srcid;
|
|
uint32_t m_dmr_destid;
|
|
QMap<uint32_t, QString> m_dmrids;
|
|
QMap<uint16_t, QString> m_nxdnids;
|
|
char m_module;
|
|
int m_port;
|
|
QString m_label1;
|
|
QString m_label2;
|
|
QString m_label3;
|
|
QString m_label4;
|
|
QString m_label5;
|
|
QString m_label6;
|
|
QString m_data1;
|
|
QString m_data2;
|
|
QString m_data3;
|
|
QString m_data4;
|
|
QString m_data5;
|
|
QString m_data6;
|
|
QString m_ambestatustxt;
|
|
QString m_mmdvmstatustxt;
|
|
QString m_netstatustxt;
|
|
QString m_mycall;
|
|
QString m_urcall;
|
|
QString m_rptr1;
|
|
QString m_rptr2;
|
|
int m_txtimeout;
|
|
bool m_toggletx;
|
|
QString m_dstarusertxt;
|
|
QStringList m_hostsmodel;
|
|
QMap<QString, QString> m_hostmap;
|
|
QStringList m_customhosts;
|
|
QThread *m_modethread;
|
|
Mode *m_mode;
|
|
QByteArray user_data;
|
|
QString m_localhosts;
|
|
int m_iaxport;
|
|
bool m_settings_processed;
|
|
bool m_modelchange;
|
|
const uint8_t header[5] = {0x80,0x44,0x53,0x56,0x54}; //DVSI packet header
|
|
uint16_t m_outlevel;
|
|
QString m_errortxt;
|
|
bool m_xrf2ref;
|
|
bool m_ipv6;
|
|
QString m_vocoder;
|
|
QString m_modem;
|
|
QString m_playback;
|
|
QString m_capture;
|
|
QStringList m_vocoders;
|
|
QStringList m_modems;
|
|
QStringList m_playbacks;
|
|
QStringList m_captures;
|
|
bool m_mdirect;
|
|
|
|
int m_tts;
|
|
QString m_ttstxt;
|
|
|
|
QString m_modemRxFreq;
|
|
QString m_modemTxFreq;
|
|
QString m_modemRxOffset;
|
|
QString m_modemTxOffset;
|
|
QString m_modemRxDCOffset;
|
|
QString m_modemTxDCOffset;
|
|
QString m_modemRxLevel;
|
|
QString m_modemTxLevel;
|
|
QString m_modemRFLevel;
|
|
QString m_modemTxDelay;
|
|
QString m_modemCWIdTxLevel;
|
|
QString m_modemDstarTxLevel;
|
|
QString m_modemDMRTxLevel;
|
|
QString m_modemYSFTxLevel;
|
|
QString m_modemP25TxLevel;
|
|
QString m_modemNXDNTxLevel;
|
|
QString m_modemBaud;
|
|
QString m_modemM17CAN;
|
|
bool m_modemTxInvert;
|
|
bool m_modemRxInvert;
|
|
bool m_modemPTTInvert;
|
|
#ifdef Q_OS_ANDROID
|
|
AndroidSerialPort *m_USBmonitor;
|
|
#endif
|
|
|
|
private slots:
|
|
#ifdef Q_OS_ANDROID
|
|
void keepScreenOn();
|
|
#endif
|
|
void discover_devices();
|
|
void process_dstar_hosts(QString);
|
|
void process_ysf_hosts();
|
|
void process_fcs_rooms();
|
|
void process_dmr_hosts();
|
|
void process_p25_hosts();
|
|
void process_nxdn_hosts();
|
|
void process_m17_hosts();
|
|
void process_iax_hosts();
|
|
void process_dmr_ids();
|
|
void process_nxdn_ids();
|
|
void update_data(Mode::MODEINFO);
|
|
void updatelog(QString);
|
|
void save_settings();
|
|
void update_output_level(unsigned short l){ m_outlevel = l;}
|
|
//void load_md380_fw();
|
|
};
|
|
|
|
#endif // DROIDSTAR_H
|