mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-21 15:09:23 +08:00
Clean up the code for Windows and style.
This commit is contained in:
@@ -17,7 +17,7 @@
|
|||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "IICController.h"
|
#include "I2CController.h"
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
@@ -26,9 +26,37 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
#if defined(_WIN32) || defined(_WIN64)
|
#if defined(_WIN32) || defined(_WIN64)
|
||||||
|
|
||||||
#include <setupapi.h>
|
#include <setupapi.h>
|
||||||
#include <winioctl.h>
|
#include <winioctl.h>
|
||||||
|
|
||||||
|
CI2CController::CI2CController(const std::string& device, SERIAL_SPEED speed, unsigned int address, bool assertRTS) :
|
||||||
|
CSerialController(device, speed, assertRTS),
|
||||||
|
m_address(address)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
CI2CController::~CI2CController()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CI2CController::open()
|
||||||
|
{
|
||||||
|
return CSerialController::open();
|
||||||
|
}
|
||||||
|
|
||||||
|
int CI2CController::read(unsigned char* buffer, unsigned int length)
|
||||||
|
{
|
||||||
|
return CSerialController::read(buffer, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CI2CController::write(const unsigned char* buffer, unsigned int length)
|
||||||
|
{
|
||||||
|
return CSerialController::write(buffer, length);
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <cerrno>
|
#include <cerrno>
|
||||||
@@ -38,51 +66,21 @@
|
|||||||
#if !defined(__APPLE__)
|
#if !defined(__APPLE__)
|
||||||
#include <linux/i2c-dev.h>
|
#include <linux/i2c-dev.h>
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
|
CI2CController::CI2CController(const std::string& device, SERIAL_SPEED speed, unsigned int address, bool assertRTS) :
|
||||||
#if defined(_WIN32) || defined(_WIN64)
|
CSerialController(device, speed, assertRTS),
|
||||||
|
|
||||||
CIICController::CSerialController(const std::string& device, SERIAL_SPEED speed, unsigned int address, bool assertRTS) :
|
|
||||||
CSerialController(device,speed,assertRTS),
|
|
||||||
m_address(address)
|
m_address(address)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
CIICController::~CIICController()
|
CI2CController::~CI2CController()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CIICController::open()
|
bool CI2CController::open()
|
||||||
{
|
|
||||||
return CSerialController::open();
|
|
||||||
}
|
|
||||||
|
|
||||||
int CIICController::read(unsigned char* buffer, unsigned int length)
|
|
||||||
{
|
|
||||||
return CSerialController::read(buffer,length);
|
|
||||||
}
|
|
||||||
|
|
||||||
int CIICController::write(const unsigned char* buffer, unsigned int length)
|
|
||||||
{
|
|
||||||
return CSerialController:;write(buffer,length);
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
CIICController::CIICController(const std::string& device, SERIAL_SPEED speed, unsigned int address, bool assertRTS) :
|
|
||||||
CSerialController(device,speed,assertRTS),
|
|
||||||
m_address(address)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
CIICController::~CIICController()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CIICController::open()
|
|
||||||
{
|
{
|
||||||
assert(m_fd == -1);
|
assert(m_fd == -1);
|
||||||
|
|
||||||
#if !defined(__APPLE__)
|
#if !defined(__APPLE__)
|
||||||
m_fd = ::open(m_device.c_str(), O_RDWR);
|
m_fd = ::open(m_device.c_str(), O_RDWR);
|
||||||
if (m_fd < 0) {
|
if (m_fd < 0) {
|
||||||
@@ -102,12 +100,13 @@ bool CIICController::open()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#warning "I2C controller does not support OSX"
|
#warning "I2C controller does not support OSX"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CIICController::read(unsigned char* buffer, unsigned int length)
|
int CI2CController::read(unsigned char* buffer, unsigned int length)
|
||||||
{
|
{
|
||||||
assert(buffer != NULL);
|
assert(buffer != NULL);
|
||||||
assert(m_fd != -1);
|
assert(m_fd != -1);
|
||||||
@@ -135,7 +134,7 @@ int CIICController::read(unsigned char* buffer, unsigned int length)
|
|||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CIICController::write(const unsigned char* buffer, unsigned int length)
|
int CI2CController::write(const unsigned char* buffer, unsigned int length)
|
||||||
{
|
{
|
||||||
assert(buffer != NULL);
|
assert(buffer != NULL);
|
||||||
assert(m_fd != -1);
|
assert(m_fd != -1);
|
||||||
@@ -17,15 +17,15 @@
|
|||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef IICController_H
|
#ifndef I2CController_H
|
||||||
#define IICController_H
|
#define I2CController_H
|
||||||
|
|
||||||
#include "SerialController.h"
|
#include "SerialController.h"
|
||||||
|
|
||||||
class CIICController : public CSerialController {
|
class CI2CController : public CSerialController {
|
||||||
public:
|
public:
|
||||||
CIICController(const std::string& device, SERIAL_SPEED speed, unsigned int address = 0x22U, bool assertRTS = false);
|
CI2CController(const std::string& device, SERIAL_SPEED speed, unsigned int address = 0x22U, bool assertRTS = false);
|
||||||
virtual ~CIICController();
|
virtual ~CI2CController();
|
||||||
|
|
||||||
virtual bool open();
|
virtual bool open();
|
||||||
|
|
||||||
@@ -183,6 +183,7 @@
|
|||||||
<ClInclude Include="Golay24128.h" />
|
<ClInclude Include="Golay24128.h" />
|
||||||
<ClInclude Include="Hamming.h" />
|
<ClInclude Include="Hamming.h" />
|
||||||
<ClInclude Include="DMRLookup.h" />
|
<ClInclude Include="DMRLookup.h" />
|
||||||
|
<ClInclude Include="I2CController.h" />
|
||||||
<ClInclude Include="LCDproc.h" />
|
<ClInclude Include="LCDproc.h" />
|
||||||
<ClInclude Include="Log.h" />
|
<ClInclude Include="Log.h" />
|
||||||
<ClInclude Include="MMDVMHost.h" />
|
<ClInclude Include="MMDVMHost.h" />
|
||||||
@@ -269,6 +270,7 @@
|
|||||||
<ClCompile Include="Golay2087.cpp" />
|
<ClCompile Include="Golay2087.cpp" />
|
||||||
<ClCompile Include="Golay24128.cpp" />
|
<ClCompile Include="Golay24128.cpp" />
|
||||||
<ClCompile Include="Hamming.cpp" />
|
<ClCompile Include="Hamming.cpp" />
|
||||||
|
<ClCompile Include="I2CController.cpp" />
|
||||||
<ClCompile Include="LCDproc.cpp" />
|
<ClCompile Include="LCDproc.cpp" />
|
||||||
<ClCompile Include="Log.cpp" />
|
<ClCompile Include="Log.cpp" />
|
||||||
<ClCompile Include="MMDVMHost.cpp" />
|
<ClCompile Include="MMDVMHost.cpp" />
|
||||||
|
|||||||
@@ -272,6 +272,9 @@
|
|||||||
<ClInclude Include="POCSAGDefines.h">
|
<ClInclude Include="POCSAGDefines.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="I2CController.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="BPTC19696.cpp">
|
<ClCompile Include="BPTC19696.cpp">
|
||||||
@@ -508,5 +511,8 @@
|
|||||||
<ClCompile Include="POCSAGControl.cpp">
|
<ClCompile Include="POCSAGControl.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="I2CController.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
10
Makefile
10
Makefile
@@ -9,11 +9,11 @@ LDFLAGS = -g
|
|||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \
|
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \
|
||||||
DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \
|
DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \
|
||||||
DStarSlowData.o Golay2087.o Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o \
|
DStarSlowData.o Golay2087.o Golay24128.o Hamming.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o \
|
||||||
NullDisplay.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o \
|
Nextion.o NullDisplay.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
||||||
NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o POCSAGNetwork.o \
|
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o \
|
||||||
QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o \
|
POCSAGNetwork.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||||
UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o IICController.o
|
Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||||
|
|
||||||
all: MMDVMHost
|
all: MMDVMHost
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ LDFLAGS = -g -L/usr/local/lib
|
|||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \
|
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \
|
||||||
DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \
|
DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \
|
||||||
DStarSlowData.o Golay2087.o Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o \
|
DStarSlowData.o Golay2087.o Golay24128.o Hamming.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o \
|
||||||
NullDisplay.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o \
|
NullDisplay.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o \
|
||||||
NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o POCSAGNetwork.o \
|
NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o POCSAGNetwork.o \
|
||||||
QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o \
|
QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o \
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ LDFLAGS = -g -L/usr/local/lib
|
|||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \
|
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \
|
||||||
DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \
|
DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \
|
||||||
DStarSlowData.o Golay2087.o Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o \
|
DStarSlowData.o Golay2087.o Golay24128.o Hamming.o HD44780.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o \
|
||||||
Nextion.o NullDisplay.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
Nextion.o NullDisplay.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
||||||
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o \
|
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o \
|
||||||
POCSAGNetwork.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
POCSAGNetwork.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ LDFLAGS = -g -L/usr/local/lib
|
|||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \
|
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \
|
||||||
DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \
|
DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \
|
||||||
DStarSlowData.o Golay2087.o Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o \
|
DStarSlowData.o Golay2087.o Golay24128.o Hamming.o HD44780.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o \
|
||||||
Nextion.o NullDisplay.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
Nextion.o NullDisplay.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
||||||
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o \
|
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o \
|
||||||
POCSAGNetwork.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
POCSAGNetwork.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ LDFLAGS = -g -L/usr/local/lib
|
|||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \
|
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \
|
||||||
DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \
|
DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \
|
||||||
DStarSlowData.o Golay2087.o Golay24128.o Hamming.o OLED.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o \
|
DStarSlowData.o Golay2087.o Golay24128.o Hamming.o I2CController.o OLED.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o \
|
||||||
Nextion.o NullDisplay.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
Nextion.o NullDisplay.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
||||||
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o \
|
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o \
|
||||||
POCSAGNetwork.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
POCSAGNetwork.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ LDFLAGS = -g -L/usr/local/lib
|
|||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \
|
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \
|
||||||
DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \
|
DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \
|
||||||
DStarSlowData.o Golay2087.o Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o \
|
DStarSlowData.o Golay2087.o Golay24128.o Hamming.o HD44780.o I2CController.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o \
|
||||||
Nextion.o NullDisplay.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
Nextion.o NullDisplay.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
||||||
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o \
|
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o \
|
||||||
POCSAGNetwork.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
POCSAGNetwork.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||||
|
|||||||
48
Modem.cpp
48
Modem.cpp
@@ -16,6 +16,7 @@
|
|||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "I2CController.h"
|
||||||
#include "DStarDefines.h"
|
#include "DStarDefines.h"
|
||||||
#include "DMRDefines.h"
|
#include "DMRDefines.h"
|
||||||
#include "YSFDefines.h"
|
#include "YSFDefines.h"
|
||||||
@@ -26,7 +27,6 @@
|
|||||||
#include "Modem.h"
|
#include "Modem.h"
|
||||||
#include "Utils.h"
|
#include "Utils.h"
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
#include "IICController.h"
|
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
@@ -125,7 +125,7 @@ m_nxdnEnabled(false),
|
|||||||
m_pocsagEnabled(false),
|
m_pocsagEnabled(false),
|
||||||
m_rxDCOffset(0),
|
m_rxDCOffset(0),
|
||||||
m_txDCOffset(0),
|
m_txDCOffset(0),
|
||||||
m_serial(0),
|
m_serial(NULL),
|
||||||
m_buffer(NULL),
|
m_buffer(NULL),
|
||||||
m_length(0U),
|
m_length(0U),
|
||||||
m_offset(0U),
|
m_offset(0U),
|
||||||
@@ -167,16 +167,15 @@ m_hwType(HWT_UNKNOWN)
|
|||||||
|
|
||||||
CModem::~CModem()
|
CModem::~CModem()
|
||||||
{
|
{
|
||||||
if(m_serial)
|
|
||||||
delete m_serial;
|
delete m_serial;
|
||||||
delete[] m_buffer;
|
delete[] m_buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CModem::setSerialParams(const std::string& protocol, unsigned int address)
|
void CModem::setSerialParams(const std::string& protocol, unsigned int address)
|
||||||
{
|
{
|
||||||
//Create the serial controller instance according the protocol specified in conf.
|
// Create the serial controller instance according the protocol specified in conf.
|
||||||
if(protocol == "i2c")
|
if (protocol == "i2c")
|
||||||
m_serial = new CIICController(m_port, SERIAL_115200, address, true);
|
m_serial = new CI2CController(m_port, SERIAL_115200, address, true);
|
||||||
else
|
else
|
||||||
m_serial = new CSerialController(m_port, SERIAL_115200, true);
|
m_serial = new CSerialController(m_port, SERIAL_115200, true);
|
||||||
}
|
}
|
||||||
@@ -231,12 +230,17 @@ bool CModem::open()
|
|||||||
::LogMessage("Opening the MMDVM");
|
::LogMessage("Opening the MMDVM");
|
||||||
|
|
||||||
bool ret = m_serial->open();
|
bool ret = m_serial->open();
|
||||||
if (!ret)
|
if (!ret) {
|
||||||
|
delete m_serial;
|
||||||
|
m_serial = NULL;
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
ret = readVersion();
|
ret = readVersion();
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
m_serial->close();
|
m_serial->close();
|
||||||
|
delete m_serial;
|
||||||
|
m_serial = NULL;
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
/* Stopping the inactivity timer here when a firmware version has been
|
/* Stopping the inactivity timer here when a firmware version has been
|
||||||
@@ -247,12 +251,16 @@ bool CModem::open()
|
|||||||
ret = setFrequency();
|
ret = setFrequency();
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
m_serial->close();
|
m_serial->close();
|
||||||
|
delete m_serial;
|
||||||
|
m_serial = NULL;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = setConfig();
|
ret = setConfig();
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
m_serial->close();
|
m_serial->close();
|
||||||
|
delete m_serial;
|
||||||
|
m_serial = NULL;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -266,6 +274,8 @@ bool CModem::open()
|
|||||||
|
|
||||||
void CModem::clock(unsigned int ms)
|
void CModem::clock(unsigned int ms)
|
||||||
{
|
{
|
||||||
|
assert(m_serial != NULL);
|
||||||
|
|
||||||
// Poll the modem status every 250ms
|
// Poll the modem status every 250ms
|
||||||
m_statusTimer.clock(ms);
|
m_statusTimer.clock(ms);
|
||||||
if (m_statusTimer.hasExpired()) {
|
if (m_statusTimer.hasExpired()) {
|
||||||
@@ -741,9 +751,13 @@ void CModem::clock(unsigned int ms)
|
|||||||
|
|
||||||
void CModem::close()
|
void CModem::close()
|
||||||
{
|
{
|
||||||
|
assert(m_serial != NULL);
|
||||||
|
|
||||||
::LogMessage("Closing the MMDVM");
|
::LogMessage("Closing the MMDVM");
|
||||||
|
|
||||||
m_serial->close();
|
m_serial->close();
|
||||||
|
delete m_serial;
|
||||||
|
m_serial = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int CModem::readDStarData(unsigned char* data)
|
unsigned int CModem::readDStarData(unsigned char* data)
|
||||||
@@ -1093,6 +1107,7 @@ bool CModem::writeTransparentData(const unsigned char* data, unsigned int length
|
|||||||
|
|
||||||
bool CModem::writeSerial(const unsigned char* data, unsigned int length)
|
bool CModem::writeSerial(const unsigned char* data, unsigned int length)
|
||||||
{
|
{
|
||||||
|
assert(m_serial != NULL);
|
||||||
assert(data != NULL);
|
assert(data != NULL);
|
||||||
assert(length > 0U);
|
assert(length > 0U);
|
||||||
|
|
||||||
@@ -1131,6 +1146,8 @@ bool CModem::hasError() const
|
|||||||
|
|
||||||
bool CModem::readVersion()
|
bool CModem::readVersion()
|
||||||
{
|
{
|
||||||
|
assert(m_serial != NULL);
|
||||||
|
|
||||||
CThread::sleep(2000U); // 2s
|
CThread::sleep(2000U); // 2s
|
||||||
|
|
||||||
for (unsigned int i = 0U; i < 6U; i++) {
|
for (unsigned int i = 0U; i < 6U; i++) {
|
||||||
@@ -1186,6 +1203,8 @@ bool CModem::readVersion()
|
|||||||
|
|
||||||
bool CModem::readStatus()
|
bool CModem::readStatus()
|
||||||
{
|
{
|
||||||
|
assert(m_serial != NULL);
|
||||||
|
|
||||||
unsigned char buffer[3U];
|
unsigned char buffer[3U];
|
||||||
|
|
||||||
buffer[0U] = MMDVM_FRAME_START;
|
buffer[0U] = MMDVM_FRAME_START;
|
||||||
@@ -1199,6 +1218,8 @@ bool CModem::readStatus()
|
|||||||
|
|
||||||
bool CModem::setConfig()
|
bool CModem::setConfig()
|
||||||
{
|
{
|
||||||
|
assert(m_serial != NULL);
|
||||||
|
|
||||||
unsigned char buffer[30U];
|
unsigned char buffer[30U];
|
||||||
|
|
||||||
buffer[0U] = MMDVM_FRAME_START;
|
buffer[0U] = MMDVM_FRAME_START;
|
||||||
@@ -1298,6 +1319,8 @@ bool CModem::setConfig()
|
|||||||
|
|
||||||
bool CModem::setFrequency()
|
bool CModem::setFrequency()
|
||||||
{
|
{
|
||||||
|
assert(m_serial != NULL);
|
||||||
|
|
||||||
unsigned char buffer[20U];
|
unsigned char buffer[20U];
|
||||||
unsigned char len;
|
unsigned char len;
|
||||||
|
|
||||||
@@ -1365,6 +1388,8 @@ bool CModem::setFrequency()
|
|||||||
|
|
||||||
RESP_TYPE_MMDVM CModem::getResponse()
|
RESP_TYPE_MMDVM CModem::getResponse()
|
||||||
{
|
{
|
||||||
|
assert(m_serial != NULL);
|
||||||
|
|
||||||
if (m_offset == 0U) {
|
if (m_offset == 0U) {
|
||||||
// Get the start of the frame or nothing at all
|
// Get the start of the frame or nothing at all
|
||||||
int ret = m_serial->read(m_buffer + 0U, 1U);
|
int ret = m_serial->read(m_buffer + 0U, 1U);
|
||||||
@@ -1466,6 +1491,8 @@ HW_TYPE CModem::getHWType() const
|
|||||||
|
|
||||||
bool CModem::setMode(unsigned char mode)
|
bool CModem::setMode(unsigned char mode)
|
||||||
{
|
{
|
||||||
|
assert(m_serial != NULL);
|
||||||
|
|
||||||
unsigned char buffer[4U];
|
unsigned char buffer[4U];
|
||||||
|
|
||||||
buffer[0U] = MMDVM_FRAME_START;
|
buffer[0U] = MMDVM_FRAME_START;
|
||||||
@@ -1480,6 +1507,8 @@ bool CModem::setMode(unsigned char mode)
|
|||||||
|
|
||||||
bool CModem::sendCWId(const std::string& callsign)
|
bool CModem::sendCWId(const std::string& callsign)
|
||||||
{
|
{
|
||||||
|
assert(m_serial != NULL);
|
||||||
|
|
||||||
unsigned int length = callsign.length();
|
unsigned int length = callsign.length();
|
||||||
if (length > 200U)
|
if (length > 200U)
|
||||||
length = 200U;
|
length = 200U;
|
||||||
@@ -1500,6 +1529,8 @@ bool CModem::sendCWId(const std::string& callsign)
|
|||||||
|
|
||||||
bool CModem::writeDMRStart(bool tx)
|
bool CModem::writeDMRStart(bool tx)
|
||||||
{
|
{
|
||||||
|
assert(m_serial != NULL);
|
||||||
|
|
||||||
if (tx && m_tx)
|
if (tx && m_tx)
|
||||||
return true;
|
return true;
|
||||||
if (!tx && !m_tx)
|
if (!tx && !m_tx)
|
||||||
@@ -1519,6 +1550,8 @@ bool CModem::writeDMRStart(bool tx)
|
|||||||
|
|
||||||
bool CModem::writeDMRAbort(unsigned int slotNo)
|
bool CModem::writeDMRAbort(unsigned int slotNo)
|
||||||
{
|
{
|
||||||
|
assert(m_serial != NULL);
|
||||||
|
|
||||||
if (slotNo == 1U)
|
if (slotNo == 1U)
|
||||||
m_txDMRData1.clear();
|
m_txDMRData1.clear();
|
||||||
else
|
else
|
||||||
@@ -1538,6 +1571,7 @@ bool CModem::writeDMRAbort(unsigned int slotNo)
|
|||||||
|
|
||||||
bool CModem::writeDMRShortLC(const unsigned char* lc)
|
bool CModem::writeDMRShortLC(const unsigned char* lc)
|
||||||
{
|
{
|
||||||
|
assert(m_serial != NULL);
|
||||||
assert(lc != NULL);
|
assert(lc != NULL);
|
||||||
|
|
||||||
unsigned char buffer[12U];
|
unsigned char buffer[12U];
|
||||||
|
|||||||
2
Modem.h
2
Modem.h
@@ -128,7 +128,7 @@ private:
|
|||||||
bool m_pocsagEnabled;
|
bool m_pocsagEnabled;
|
||||||
int m_rxDCOffset;
|
int m_rxDCOffset;
|
||||||
int m_txDCOffset;
|
int m_txDCOffset;
|
||||||
CSerialController *m_serial;
|
CSerialController* m_serial;
|
||||||
unsigned char* m_buffer;
|
unsigned char* m_buffer;
|
||||||
unsigned int m_length;
|
unsigned int m_length;
|
||||||
unsigned int m_offset;
|
unsigned int m_offset;
|
||||||
|
|||||||
Reference in New Issue
Block a user