@ -174,6 +174,7 @@ Modem::Modem(port::IModemPort* port, bool duplex, bool rxInvert, bool txInvert,
m_error ( false ) ,
m_ignoreModemConfigArea ( ignoreModemConfigArea ) ,
m_flashDisabled ( false ) ,
m_gotModemStatus ( false ) ,
m_dumpModemStatus ( dumpModemStatus ) ,
m_trace ( trace ) ,
m_debug ( debug )
@ -524,6 +525,7 @@ void Modem::setCloseHandler(std::function<MODEM_OC_PORT_HANDLER> handler)
bool Modem : : open ( )
{
LogMessage ( LOG_MODEM , " Initializing modem " ) ;
m_gotModemStatus = false ;
bool ret = m_port - > open ( ) ;
if ( ! ret )
@ -905,6 +907,7 @@ void Modem::clock(uint32_t ms)
m_rxP25Queue . length ( ) , m_rxP25Queue . dataSize ( ) , m_rxP25Queue . freeSpace ( ) , m_rxNXDNQueue . length ( ) , m_rxNXDNQueue . dataSize ( ) , m_rxNXDNQueue . freeSpace ( ) ) ;
}
m_gotModemStatus = true ;
m_inactivityTimer . start ( ) ;
}
break ;
@ -972,6 +975,8 @@ void Modem::close()
LogDebug ( LOG_MODEM , " Closing the modem " ) ;
m_port - > close ( ) ;
m_gotModemStatus = false ;
// do we have a close port handler?
if ( m_closePortHandler ! = nullptr ) {
m_closePortHandler ( this ) ;
@ -1167,6 +1172,15 @@ bool Modem::hasError() const
return m_error ;
}
/// <summary>
/// Flag indicating whether or not the air interface modem has sent the initial modem status.
/// </summary>
/// <returns>True, if the air interface modem has sent the initial status, otherwise false.</returns>
bool Modem : : gotModemStatus ( ) const
{
return m_gotModemStatus ;
}
/// <summary>
/// Clears any buffered DMR Slot 1 frame data to be sent to the air interface modem.
/// </summary>
@ -1467,7 +1481,10 @@ bool Modem::writeP25Frame(const uint8_t* data, uint32_t length)
assert ( length > 0U ) ;
if ( m_p25Enabled ) {
const uint16_t MAX_LENGTH = 520U ;
uint16_t MAX_LENGTH = 520U ;
if ( m_protoVer < = 3U ) {
MAX_LENGTH = 251U ; // for older firmware always ensure frames are shorter then 252 bytes
}
if ( data [ 0U ] ! = TAG_DATA & & data [ 0U ] ! = TAG_EOT )
return false ;