mirror of https://github.com/ShaYmez/xlxd.git
ambed 1.3.4
Solved issue when pairing a 3003 with a 3000. Solved issue when aggregating more than 2 devices
This commit is contained in:
parent
f643fc512a
commit
df41211a11
|
@ -117,11 +117,12 @@ bool CVocodecs::Init(void)
|
||||||
{
|
{
|
||||||
descr2 = m_FtdiDeviceDescrs[j];
|
descr2 = m_FtdiDeviceDescrs[j];
|
||||||
found = (!descr2->IsUsed() && (descr2->GetNbChannels() == 1));
|
found = (!descr2->IsUsed() && (descr2->GetNbChannels() == 1));
|
||||||
|
j++;
|
||||||
}
|
}
|
||||||
// found one ?
|
// found one ?
|
||||||
if ( found )
|
if ( found )
|
||||||
{
|
{
|
||||||
// yes, create and pairboth interfaces
|
// yes, create and pair both interfaces
|
||||||
iNbCh += CFtdiDeviceDescr::CreateInterfacePair(descr1, descr2, &PairsOf3000DevicesChs);
|
iNbCh += CFtdiDeviceDescr::CreateInterfacePair(descr1, descr2, &PairsOf3000DevicesChs);
|
||||||
// and flag as used
|
// and flag as used
|
||||||
descr1->SetUsed(true);
|
descr1->SetUsed(true);
|
||||||
|
@ -138,24 +139,54 @@ bool CVocodecs::Init(void)
|
||||||
CFtdiDeviceDescr *descr2 = NULL;
|
CFtdiDeviceDescr *descr2 = NULL;
|
||||||
if ( !descr1->IsUsed() && (descr1->GetNbChannels() == 3) )
|
if ( !descr1->IsUsed() && (descr1->GetNbChannels() == 3) )
|
||||||
{
|
{
|
||||||
// any other odd channel device to pair with ?
|
// any other 3 channel device to pair with ?
|
||||||
// any other single channel device to pair with ?
|
|
||||||
bool found = false;
|
bool found = false;
|
||||||
int j = i+1;
|
int j = i+1;
|
||||||
while ( !found && (j < m_FtdiDeviceDescrs.size()) )
|
while ( !found && (j < m_FtdiDeviceDescrs.size()) )
|
||||||
{
|
{
|
||||||
descr2 = m_FtdiDeviceDescrs[j];
|
descr2 = m_FtdiDeviceDescrs[j];
|
||||||
found = (!descr2->IsUsed() && IsOdd(descr2->GetNbChannels()));
|
found = (!descr2->IsUsed() && (descr2->GetNbChannels() == 3));
|
||||||
|
j++;
|
||||||
}
|
}
|
||||||
// found one ?
|
// found one ?
|
||||||
if ( found )
|
if ( found )
|
||||||
{
|
{
|
||||||
// yes, create and pairboth interfaces
|
// yes, create and pair both interfaces
|
||||||
iNbCh += CFtdiDeviceDescr::CreateInterfacePair(descr1, descr2, &Multi3003DevicesChs);
|
iNbCh += CFtdiDeviceDescr::CreateInterfacePair(descr1, descr2, &Multi3003DevicesChs);
|
||||||
// and flag as used
|
// and flag as used
|
||||||
descr1->SetUsed(true);
|
descr1->SetUsed(true);
|
||||||
descr2->SetUsed(true);
|
descr2->SetUsed(true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// at this point we should have only remaining an unique 3 channels
|
||||||
|
// and or a unique single channel
|
||||||
|
std::vector<CVocodecChannel *> Combined3003And3000DeviceChannels;
|
||||||
|
for ( int i = 0; i < m_FtdiDeviceDescrs.size(); i++ )
|
||||||
|
{
|
||||||
|
CFtdiDeviceDescr *descr1 = m_FtdiDeviceDescrs[i];
|
||||||
|
CFtdiDeviceDescr *descr2 = NULL;
|
||||||
|
// Any 3003 ?
|
||||||
|
if ( !descr1->IsUsed() && (descr1->GetNbChannels() == 3) )
|
||||||
|
{
|
||||||
|
// any single channel device to pair with ?
|
||||||
|
bool found = false;
|
||||||
|
int j = 0;
|
||||||
|
while ( !found && (j < m_FtdiDeviceDescrs.size()) )
|
||||||
|
{
|
||||||
|
descr2 = m_FtdiDeviceDescrs[j];
|
||||||
|
found = ((descr1 != descr2) && !descr2->IsUsed() && (descr2->GetNbChannels() == 1));
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
// found one ?
|
||||||
|
if ( found )
|
||||||
|
{
|
||||||
|
// yes, create and pair both interfaces
|
||||||
|
iNbCh += CFtdiDeviceDescr::CreateInterfacePair(descr1, descr2, &Combined3003And3000DeviceChannels);
|
||||||
|
// and flag as used
|
||||||
|
descr1->SetUsed(true);
|
||||||
|
descr2->SetUsed(true);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// no, just create a standalone 3003 interface
|
// no, just create a standalone 3003 interface
|
||||||
|
@ -165,10 +196,11 @@ bool CVocodecs::Init(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// at this point we should possible only have unique 3003 remaining
|
||||||
|
|
||||||
// now agregate channels by order of priority
|
// now agregate channels by order of priority
|
||||||
// for proper load sharing
|
// for proper load sharing
|
||||||
// pairs of 300 devices first
|
// pairs of 3000 devices first
|
||||||
{
|
{
|
||||||
for ( int i = 0; i < PairsOf3000DevicesChs.size(); i++ )
|
for ( int i = 0; i < PairsOf3000DevicesChs.size(); i++ )
|
||||||
{
|
{
|
||||||
|
@ -184,11 +216,11 @@ bool CVocodecs::Init(void)
|
||||||
}
|
}
|
||||||
Single3003DeviceChannels.clear();
|
Single3003DeviceChannels.clear();
|
||||||
}
|
}
|
||||||
// and finally interlace multi-3003 and pairs of 3003 devices which always
|
// finally interlace multi-3003 and pairs of 3003 devices which always
|
||||||
// results to 6 channels per pair of 3003
|
// results to 6 channels per pair of 3003
|
||||||
{
|
{
|
||||||
int n = (int)Multi3003DevicesChs.size() / 6;
|
int n = (int)Multi3003DevicesChs.size() / 6;
|
||||||
for ( int i = 0; i < 6; i++ )
|
for ( int i = 0; (i < 6) && (n != 0); i++ )
|
||||||
{
|
{
|
||||||
for ( int j = 0; j < n; j++ )
|
for ( int j = 0; j < n; j++ )
|
||||||
{
|
{
|
||||||
|
@ -197,7 +229,15 @@ bool CVocodecs::Init(void)
|
||||||
}
|
}
|
||||||
Multi3003DevicesChs.clear();
|
Multi3003DevicesChs.clear();
|
||||||
}
|
}
|
||||||
|
// and finaly the hybrid combination of 3003 / 3000
|
||||||
|
{
|
||||||
|
for ( int i = 0; i < Combined3003And3000DeviceChannels.size(); i++ )
|
||||||
|
{
|
||||||
|
m_Channels.push_back(Combined3003And3000DeviceChannels.at(i));
|
||||||
|
}
|
||||||
|
Combined3003And3000DeviceChannels.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// done
|
// done
|
||||||
if ( ok )
|
if ( ok )
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
|
|
||||||
#define VERSION_MAJOR 1
|
#define VERSION_MAJOR 1
|
||||||
#define VERSION_MINOR 3
|
#define VERSION_MINOR 3
|
||||||
#define VERSION_REVISION 3
|
#define VERSION_REVISION 4
|
||||||
|
|
||||||
// global ------------------------------------------------------
|
// global ------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
// along with Foobar. If not, see <http://www.gnu.org/licenses/>.
|
// along with Foobar. If not, see <http://www.gnu.org/licenses/>.
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
VERSION: 1.3.2
|
VERSION: 1.3.4
|
||||||
|
|
||||||
Hardware compatibility.
|
Hardware compatibility.
|
||||||
======================
|
======================
|
||||||
|
@ -44,7 +44,7 @@ device DMR->DSTAR DSTAR->DMR Nb Of concurrent channels
|
||||||
3000(pair) 1 1 2
|
3000(pair) 1 1 2
|
||||||
3003 1 1 2
|
3003 1 1 2
|
||||||
3003(pair) 3 3 4
|
3003(pair) 3 3 4
|
||||||
3003-3000(pair) 2 2 not tested
|
3003-3000(pair) 2 2 4
|
||||||
3006 3 3 6
|
3006 3 3 6
|
||||||
3012 6 6 12
|
3012 6 6 12
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue