mirror of https://github.com/g4klx/MMDVM.git
Add M17 calibration mode.
This commit is contained in:
parent
5800b33f21
commit
f65d52bf2f
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2009-2015,2020,2021 by Jonathan Naylor G4KLX
|
||||||
|
* Copyright (C) 2016 by Colin Durbridge G4EML
|
||||||
|
*
|
||||||
|
* 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 2 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, write to the Free Software
|
||||||
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Config.h"
|
||||||
|
|
||||||
|
#if defined(MODE_M17)
|
||||||
|
|
||||||
|
#include "Globals.h"
|
||||||
|
#include "CalM17.h"
|
||||||
|
#include "M17Defines.h"
|
||||||
|
|
||||||
|
const uint8_t PREAMBLE[] = {0x00U,
|
||||||
|
0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U,
|
||||||
|
0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U,
|
||||||
|
0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U,
|
||||||
|
0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U,
|
||||||
|
0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U,
|
||||||
|
0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U};
|
||||||
|
|
||||||
|
CCalM17::CCalM17()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CCalM17::process()
|
||||||
|
{
|
||||||
|
m17TX.process();
|
||||||
|
|
||||||
|
uint16_t space = m17TX.getSpace();
|
||||||
|
if (space < 2U)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m17TX.writeData(PREAMBLE, M17_FRAME_LENGTH_BYTES + 1U);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2009-2015,2020,2021 by Jonathan Naylor G4KLX
|
||||||
|
* Copyright (C) 2016 by Colin Durbridge G4EML
|
||||||
|
*
|
||||||
|
* 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 2 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, write to the Free Software
|
||||||
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Config.h"
|
||||||
|
|
||||||
|
#if defined(MODE_M17)
|
||||||
|
|
||||||
|
#if !defined(CALM17_H)
|
||||||
|
#define CALM17_H
|
||||||
|
|
||||||
|
|
||||||
|
class CCalM17 {
|
||||||
|
public:
|
||||||
|
CCalM17();
|
||||||
|
|
||||||
|
void process();
|
||||||
|
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2015,2016,2017,2018,2020 by Jonathan Naylor G4KLX
|
* Copyright (C) 2015,2016,2017,2018,2020,2021 by Jonathan Naylor G4KLX
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -72,7 +72,8 @@ enum MMDVM_STATE {
|
||||||
STATE_FMCAL15K = 104,
|
STATE_FMCAL15K = 104,
|
||||||
STATE_FMCAL20K = 105,
|
STATE_FMCAL20K = 105,
|
||||||
STATE_FMCAL25K = 106,
|
STATE_FMCAL25K = 106,
|
||||||
STATE_FMCAL30K = 107
|
STATE_FMCAL30K = 107,
|
||||||
|
STATE_M17CAL = 108
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "SerialPort.h"
|
#include "SerialPort.h"
|
||||||
|
@ -103,6 +104,7 @@ enum MMDVM_STATE {
|
||||||
#include "CWIdTX.h"
|
#include "CWIdTX.h"
|
||||||
#include "AX25RX.h"
|
#include "AX25RX.h"
|
||||||
#include "AX25TX.h"
|
#include "AX25TX.h"
|
||||||
|
#include "CalM17.h"
|
||||||
#include "Debug.h"
|
#include "Debug.h"
|
||||||
#include "IO.h"
|
#include "IO.h"
|
||||||
#include "FM.h"
|
#include "FM.h"
|
||||||
|
@ -188,6 +190,8 @@ extern CCalPOCSAG calPOCSAG;
|
||||||
#if defined(MODE_M17)
|
#if defined(MODE_M17)
|
||||||
extern CM17RX m17RX;
|
extern CM17RX m17RX;
|
||||||
extern CM17TX m17TX;
|
extern CM17TX m17TX;
|
||||||
|
|
||||||
|
extern CCalM17 calM17;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MODE_FM)
|
#if defined(MODE_FM)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2015,2016,2017,2018,2020 by Jonathan Naylor G4KLX
|
* Copyright (C) 2015,2016,2017,2018,2020,2021 by Jonathan Naylor G4KLX
|
||||||
* Copyright (C) 2016 by Mathis Schmieder DB9MAT
|
* Copyright (C) 2016 by Mathis Schmieder DB9MAT
|
||||||
* Copyright (C) 2016 by Colin Durbridge G4EML
|
* Copyright (C) 2016 by Colin Durbridge G4EML
|
||||||
*
|
*
|
||||||
|
@ -82,6 +82,8 @@ CCalNXDN calNXDN;
|
||||||
#if defined(MODE_M17)
|
#if defined(MODE_M17)
|
||||||
CM17RX m17RX;
|
CM17RX m17RX;
|
||||||
CM17TX m17TX;
|
CM17TX m17TX;
|
||||||
|
|
||||||
|
CCalM17 calM17;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MODE_POCSAG)
|
#if defined(MODE_POCSAG)
|
||||||
|
@ -192,6 +194,11 @@ void loop()
|
||||||
calNXDN.process();
|
calNXDN.process();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MODE_M17)
|
||||||
|
if (m_modemState == STATE_M17CAL)
|
||||||
|
calM17.process();
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(MODE_POCSAG)
|
#if defined(MODE_POCSAG)
|
||||||
if (m_modemState == STATE_POCSAGCAL)
|
if (m_modemState == STATE_POCSAGCAL)
|
||||||
calPOCSAG.process();
|
calPOCSAG.process();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2015,2016,2017,2018,2020 by Jonathan Naylor G4KLX
|
* Copyright (C) 2015,2016,2017,2018,2020,2021 by Jonathan Naylor G4KLX
|
||||||
* Copyright (C) 2016 by Colin Durbridge G4EML
|
* Copyright (C) 2016 by Colin Durbridge G4EML
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -79,6 +79,8 @@ CCalNXDN calNXDN;
|
||||||
#if defined(MODE_M17)
|
#if defined(MODE_M17)
|
||||||
CM17RX m17RX;
|
CM17RX m17RX;
|
||||||
CM17TX m17TX;
|
CM17TX m17TX;
|
||||||
|
|
||||||
|
CCalM17 calM17;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MODE_POCSAG)
|
#if defined(MODE_POCSAG)
|
||||||
|
@ -189,6 +191,11 @@ void loop()
|
||||||
calNXDN.process();
|
calNXDN.process();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MODE_M17)
|
||||||
|
if (m_modemState == STATE_M17CAL)
|
||||||
|
calM17.process();
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(MODE_POCSAG)
|
#if defined(MODE_POCSAG)
|
||||||
if (m_modemState == STATE_POCSAGCAL)
|
if (m_modemState == STATE_POCSAGCAL)
|
||||||
calPOCSAG.process();
|
calPOCSAG.process();
|
||||||
|
|
|
@ -417,7 +417,9 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint16_t length)
|
||||||
|
|
||||||
MMDVM_STATE modemState = MMDVM_STATE(data[4U]);
|
MMDVM_STATE modemState = MMDVM_STATE(data[4U]);
|
||||||
|
|
||||||
if (modemState != STATE_IDLE && modemState != STATE_DSTAR && modemState != STATE_DMR && modemState != STATE_YSF && modemState != STATE_P25 && modemState != STATE_NXDN && modemState != STATE_M17 && modemState != STATE_POCSAG && modemState != STATE_FM && modemState != STATE_DSTARCAL && modemState != STATE_DMRCAL && modemState != STATE_RSSICAL && modemState != STATE_LFCAL && modemState != STATE_DMRCAL1K && modemState != STATE_P25CAL1K && modemState != STATE_DMRDMO1K && modemState != STATE_NXDNCAL1K && modemState != STATE_POCSAGCAL && modemState != STATE_FMCAL10K && modemState != STATE_FMCAL12K && modemState != STATE_FMCAL15K && modemState != STATE_FMCAL20K && modemState != STATE_FMCAL25K && modemState != STATE_FMCAL30K)
|
if (modemState != STATE_IDLE && modemState != STATE_DSTAR && modemState != STATE_DMR && modemState != STATE_YSF && modemState != STATE_P25 && modemState != STATE_NXDN && modemState != STATE_M17 && modemState != STATE_POCSAG && modemState != STATE_FM &&
|
||||||
|
modemState != STATE_DSTARCAL && modemState != STATE_DMRCAL && modemState != STATE_RSSICAL && modemState != STATE_LFCAL && modemState != STATE_DMRCAL1K && modemState != STATE_P25CAL1K && modemState != STATE_DMRDMO1K && modemState != STATE_NXDNCAL1K && modemState != STATE_M17CAL && modemState != STATE_POCSAGCAL &&
|
||||||
|
modemState != STATE_FMCAL10K && modemState != STATE_FMCAL12K && modemState != STATE_FMCAL15K && modemState != STATE_FMCAL20K && modemState != STATE_FMCAL25K && modemState != STATE_FMCAL30K)
|
||||||
return 4U;
|
return 4U;
|
||||||
|
|
||||||
#if defined(MODE_DSTAR)
|
#if defined(MODE_DSTAR)
|
||||||
|
@ -696,7 +698,9 @@ uint8_t CSerialPort::setMode(const uint8_t* data, uint16_t length)
|
||||||
if (modemState == m_modemState)
|
if (modemState == m_modemState)
|
||||||
return 0U;
|
return 0U;
|
||||||
|
|
||||||
if (modemState != STATE_IDLE && modemState != STATE_DSTAR && modemState != STATE_DMR && modemState != STATE_YSF && modemState != STATE_P25 && modemState != STATE_NXDN && modemState != STATE_M17 && modemState != STATE_POCSAG && modemState != STATE_FM && modemState != STATE_DSTARCAL && modemState != STATE_DMRCAL && modemState != STATE_RSSICAL && modemState != STATE_LFCAL && modemState != STATE_DMRCAL1K && modemState != STATE_P25CAL1K && modemState != STATE_DMRDMO1K && modemState != STATE_NXDNCAL1K && modemState != STATE_POCSAGCAL && modemState != STATE_FMCAL10K && modemState != STATE_FMCAL12K && modemState != STATE_FMCAL15K && modemState != STATE_FMCAL20K && modemState != STATE_FMCAL25K && modemState != STATE_FMCAL30K)
|
if (modemState != STATE_IDLE && modemState != STATE_DSTAR && modemState != STATE_DMR && modemState != STATE_YSF && modemState != STATE_P25 && modemState != STATE_NXDN && modemState != STATE_M17 && modemState != STATE_POCSAG && modemState != STATE_FM &&
|
||||||
|
modemState != STATE_DSTARCAL && modemState != STATE_DMRCAL && modemState != STATE_RSSICAL && modemState != STATE_LFCAL && modemState != STATE_DMRCAL1K && modemState != STATE_P25CAL1K && modemState != STATE_DMRDMO1K && modemState != STATE_NXDNCAL1K && modemState != STATE_M17CAL && modemState != STATE_POCSAGCAL &&
|
||||||
|
modemState != STATE_FMCAL10K && modemState != STATE_FMCAL12K && modemState != STATE_FMCAL15K && modemState != STATE_FMCAL20K && modemState != STATE_FMCAL25K && modemState != STATE_FMCAL30K)
|
||||||
return 4U;
|
return 4U;
|
||||||
|
|
||||||
#if defined(MODE_DSTAR)
|
#if defined(MODE_DSTAR)
|
||||||
|
@ -837,6 +841,9 @@ void CSerialPort::setMode(MMDVM_STATE modemState)
|
||||||
case STATE_POCSAGCAL:
|
case STATE_POCSAGCAL:
|
||||||
DEBUG1("Mode set to POCSAG Calibrate");
|
DEBUG1("Mode set to POCSAG Calibrate");
|
||||||
break;
|
break;
|
||||||
|
case STATE_M17CAL:
|
||||||
|
DEBUG1("Mode set to M17 Calibrate");
|
||||||
|
break;
|
||||||
default: // STATE_IDLE
|
default: // STATE_IDLE
|
||||||
DEBUG1("Mode set to Idle");
|
DEBUG1("Mode set to Idle");
|
||||||
break;
|
break;
|
||||||
|
@ -1100,6 +1107,10 @@ void CSerialPort::processMessage(uint8_t type, const uint8_t* buffer, uint16_t l
|
||||||
if (m_modemState == STATE_NXDNCAL1K)
|
if (m_modemState == STATE_NXDNCAL1K)
|
||||||
err = calNXDN.write(buffer, length);
|
err = calNXDN.write(buffer, length);
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(MODE_M17)
|
||||||
|
if (m_modemState == STATE_M17CAL)
|
||||||
|
err = 0U;
|
||||||
|
#endif
|
||||||
#if defined(MODE_POCSAG)
|
#if defined(MODE_POCSAG)
|
||||||
if (m_modemState == STATE_POCSAGCAL)
|
if (m_modemState == STATE_POCSAGCAL)
|
||||||
err = calPOCSAG.write(buffer, length);
|
err = calPOCSAG.write(buffer, length);
|
||||||
|
|
Loading…
Reference in New Issue