/*******************************************************************************
* SDR Trunk
* Copyright (C) 2014 Dennis Sheirer
*
* 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 <http://www.gnu.org/licenses/>
******************************************************************************/
package bits;
public enum SyncPattern
{
/* Revs (0xAA) and Sync (0x7650) = 01010 0111011001010000 */
FLEETSYNC1( new boolean[]
{
false, true, false, true, false, //end of revs
false, true, true, true, //0111 0x7
false, true, true, false, //0110 0x6
false, true, false, true, //0101 0x5
false, false, false, false //0000 0x0
} ),
/* Revs (0x0A) and Sync (0x23EB) = 10101 0010001111101011 */
FLEETSYNC2( new boolean[]
{
false, true, false, true, false, //End of bit revs
false, false, true, false, //0010 0x2
false, false, true, true, //0011 0x3
true, true, true, false, //1110 0xE
true, false, true, true //1011 0xB
} ),
/* 0x550F */
LJ1200( new boolean[]
{
false, true, false,true,
false, true, false,true,
false, false, false, false,
true, true, true, true
}),
/* 0x2AD5 */
LJ1200_TRANSPONDER( new boolean[]
{
false, false, true, false,
true, false, true, false,
true, true, false, true,
false, true, false, true
}),
/**
* Note: we use a truncated portion of the NRZ-I encoded sync pattern.
* The truncated version seems to work well enough for detecting the burst,
* while limiting falsing.
*
* Sync: .... .... 0000 0111 0000 1001 0010 1010 0100 0100 0110 1111
* Rev & Sync: ...1 0101 0000 0111 0000 1001 0010 1010 0100 0100 0110 1111
* NRZ-I: .... 1111 1000 0100 1000 1101 1011 1111 0110 0110 0101 1000
* This: .... .... 1000 0100 1000 1101 1011 1111 .... .... .... ....
*/
/* Sync (0x07092A446F) = 0000011100001001001010100100010001101111 */
MDC1200( new boolean[]
{
false, false, false, false,//0000 0x0
false, true, true, true, //0111 0x7
false, false, false, false,//0000 0x0
true, false, false, true, //1001 0x9
false, false, true, false, //0010 0x2
true, false, true, false, //1010 0xA
false, true, false, false, //0100 0x4
false, true, false, false, //0100 0x4
false, true, true, false, //0110 0x6
true, true, true, true //1111 0xF
} ),
/* Revs (0xA) and Sync(0xA4D7) = 1010 1100010011010111 */
MPT1327_CONTROL( new boolean[]
{
true, false, true, false, //Includes 4 of 16 rev bits
true, true, false, false, //1100 0xA
false, true, false, false, //0100 0x4
true, true, false, true, //1101 0xD
false, true, true, true //0111 0x7
}),
/**
* French variant of MPT-1327. This variant uses the following a different
* sync pattern:
*
* SYNC: 1011 0100 0011 0011
*/
MPT1327_CONTROL_FRENCH( new boolean[]
{
true, false, true, false, //Includes final 4 of 16 rev bits
true, false, true, true, //1011 0xB
false, true, false, false, //0100 0x4
false, false, true, true, //0011 0x3
false, false, true, true //0011 0x3
}),
/* Revs (0xA) and Sync(0x3B28) = 1010 0011101100101000 */
MPT1327_TRAFFIC( new boolean[]
{
true, false, true, false, //1010 Includes 4 of 16 rev bits
false, false, true, true, //0011 0x3
true, false, true, true, //1011 0xB
false, false, true, false, //0010 0x2
true, false, false, false //1000 0x8
}),
/**
* French variant of MPT-1327. This variant uses the following a different
* sync pattern:
*
* SYNT: 0100 1011 1100 1100
*/
MPT1327_TRAFFIC_FRENCH( new boolean[]
{
true, false, true, false, //Includes final 4 of 16 rev bits
false, true, false, false, //0100 0x4
true, false, true, true, //1011 0xB
true, true, false, false, //1100 0xC
true, true, false, false //1100 0xC
}),
/* Sync (0x158) = 1101011000 */
PASSPORT( new boolean[]
{
true, //0001 0x1
false, true, false, true, //0101 0x5
true, false, false, false //1000 0x8
} ),
LTR_STANDARD_OSW( new boolean[]
{
true,false,true,false,true,true,false,false,false
} ),
LTR_STANDARD_ISW( new boolean[]
{
false, true, false, true,false, false, true, true, true
} ),
TAIT_CCDI_GPS_MESSAGE( new boolean[]
{
true,false,true,false,
false,false,false,true,
false,true,false,false,
true,true,false,true,
true,true,false,false
}),
TAIT_SELCAL_MESSAGE( new boolean[]
{
// true,false,true,false,
// false,false,false,false,
// true,true,false,false,
// false,true,true,true,
// false,true,true,true
false,true,false,false,
false,false,false,true,
true,false,false,false,
true,true,true,false,
true,true,true,false
});
boolean[] mBits;
private SyncPattern( boolean[] bits )
{
mBits = bits;
}
public boolean[] getPattern()
{
return mBits;
}
}