/******************************************************************************* * 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 ******************************************************************************/ package decode.ltrstandard; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import message.Message; import message.MessageDirection; import message.MessageType; import alias.Alias; import alias.AliasList; import bits.BitSetBuffer; import crc.CRC; import crc.CRCLTR; import decode.DecoderType; public abstract class LTRStandardMessage extends Message { protected static final String sUNKNOWN = "**UNKNOWN**"; protected static final int sINT_NULL_VALUE = -1; protected static final double sDOUBLE_NULL_VALUE = -1.0D; protected SimpleDateFormat mDatestampFormatter = new SimpleDateFormat( "yyyyMMdd HHmmss" ); protected DecimalFormat mDecimalFormatter = new DecimalFormat("0.00000"); protected static final int[] sSYNC = { 8,7,6,5,4,3,2,1,0 }; protected static final int[] sAREA = { 9 }; protected static final int[] sCHANNEL = { 14,13,12,11,10 }; protected static final int[] sHOME_REPEATER = { 19,18,17,16,15 }; protected static final int[] sGROUP = { 27,26,25,24,23,22,21,20 }; protected static final int[] sFREE = { 32,31,30,29,28 }; protected static final int[] sCRC = { 39,38,37,36,35,34,33 }; protected BitSetBuffer mMessage; protected MessageType mMessageType; protected CRC mCRC; protected AliasList mAliasList; public LTRStandardMessage( BitSetBuffer message, MessageDirection direction, AliasList list ) { mMessage = message; mCRC = CRCLTR.check( message, direction ); mAliasList = list; } public MessageType getMessageType() { return mMessageType; } public boolean isValid() { return mCRC != CRC.FAILED_CRC && mCRC != CRC.FAILED_PARITY; } /** * Appends spaces to the end of the stringbuilder to make it length long */ protected void pad( StringBuilder sb, int length ) { while( sb.length() < length ) { sb.append( " " ); } } @Override public String getBinaryMessage() { return mMessage.toString(); } /** * Returns a value formatted in hex notation. * * @param value - integer value * @return - hex digits returned */ protected static String getHex( int value, int digits ) { return String.format( "%0" + digits + "X", value ); } protected int getInt( int[] bits ) { int retVal = 0; for( int x = 0; x < bits.length; x++ ) { if( mMessage.get( bits[ x ] ) ) { retVal += 1<