// MyMonModuleZVEI.h: Schnittstelle f�r die Klasse MonitorModuleZVEI.
/*
* based on: demod_zvei.c -- ZVEI signalling demodulator/decoder
*
* Copyright (C) 1996
* Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu)
*
* Copyright (C) 1998-2002
* Markus Grohmann (markus_grohmann@gmx.de)
*
* Copyright (c) 2002-2007
* Stephan Effertz (info@stephan-effertz.de)
*
* Edited 11/2007 - demod partly rewritten, fully functional but to be tested "in the wild":
* Martin Diedrich (martin@mdiedrich.de)
*
* (Demodulation parts taken from monitor (c) Markus Grohmann, Thomas Sailor)
*
* 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 2 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, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* ------------------------------------------------------------------------- */
#if !defined(AFX_MYMONMODULEZVEI_H__AE2C7DF3_BFD5_4A65_A86B_09BD277F35FD__INCLUDED_)
#define AFX_MYMONMODULEZVEI_H__AE2C7DF3_BFD5_4A65_A86B_09BD277F35FD__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "MonitorModules.h"
#define COSTABSIZE 0x400
class MonitorModuleZVEI : public MonitorModule
{
public:
int find_max_index(const float *totte, int index1, int index2);
void demod(float* buffer, int length);
MonitorModuleZVEI(int sampleRate,XMLNode *pConfig);
int debugmodus;
float squelch;
// MonitorModuleZVEI(XMLNode *pConfig);
virtual ~MonitorModuleZVEI();
protected:
void StoreResult(std::string Adresse,int typ, std::string text);
void DisplayResult(std::string Adresse, int typ, std::string Text);
int *process_block(int *found_tones);
int BLOCKLEN;
int PHINC(int x);
short int pause_length;
short int lastch;
short int lastout;
short int zvei_folge[5]; // array length of ZVEI-Tonfolge - change when needed longer!
unsigned int folge_position;
unsigned int maxlength;
bool timeout;
int* found_tones;
short int tone_count;
int detected_seven[7][7];
short int seven_count;
int fuzzyseven();
bool zvei_ok();
short int siren_count;
char zvei_character[20];
unsigned int zvei_freq[20] ;
unsigned int ph[20];
float energy[4],tenergy[4][40];
int blkcount;
float costabf[COSTABSIZE];
};
#endif // !defined(AFX_MYMONMODULEZVEI_H__AE2C7DF3_BFD5_4A65_A86B_09BD277F35FD__INCLUDED_)