//	ggcw.h		gg630504 hg9ieg linux.ubuntu.gcc
//	2010-03-05 - 2025-11-12

#ifndef _ggcw_
#define _ggcw_

#include "ggstd.h"
#include "ggch.h"
#include "ggph.h"

/*
chCwEsc
	0 .. 9			dot time, several
	c			interchar time
	w			space, interword time
		s		space
		m		mark
			;	end
*/


// üzemi jelek karakter kódjai
#define chCwAR		chFf  // ff
#define chCwAS		chSyn // syn
#define chCwBK		chDle // dle
#define chCwCQ		chEnq // enq
#define chCwCT		chStx // stx
#define chCwER		chBs  // bs
#define chCwKN		chRs  // rs
#define chCwSK		chFs  // fs
#define chCwSN		chAck // ack
#define chCwSOS		chEsc // esc

#define szCwCT		szStx
#define szCwSK		szFs

// átkapcsoló karakter
#define chCwEsc		chDc2
#define cuCwEsc		chDc2
#define szCwEsc		szDc2

// morse kód
#define cwcUndefined	0x0000
#define cwcBit		0x8000
#define cwcEnd		0x8000
#define cwcSpace	0x8000

// szünet / jel
#define cwsSpace	0
#define cwsMark		1
#define cwsUndefined	(-2)

#define CwcShiftCwc( cwc_ )	( (cwc_) << 1 )
#define ShiftCwc( cwc_ )	( (cwc_) <<= 1 )

#define PcwtRaIx( ra_, ix_ )	(((PCWT)((ra_).pv))+(ix_))
#define PcwtPraIx( pra_, ix_ )	(((PCWT)(pra_)->pv)+(ix_))



#define szBBBW0		"BENS BEST BENT WIRE /5 5 ESE BENN BENT BENN BEST"
#define szBBBW1		"BENS BEST BENT WIRE 5/5"\
	" H" szCwEsc "1s;N H" szCwEsc "1s;N H" szCwEsc "1s;N EET"\
	" H" szCwEsc "1s;N H" szCwEsc "1s;N H" szCwEsc "1s;N TTT"\
	" M" szCwEsc "1s;H M" szCwEsc "1s;H M" szCwEsc "1s;H T"\
	" M" szCwEsc "1s;H M" szCwEsc "1s;H M" szCwEsc "1s;H T"\
	" BENS BEST BENT WIRE"\
	" H" szCwEsc "1s;N H" szCwEsc "1s;N H" szCwEsc "1s;N EET"\
	" H" szCwEsc "1s;N H" szCwEsc "1s;N H" szCwEsc "1s;N TTT"\
	" BENS BEST BENT WIRE"


typedef short int		CWS;	// cw signal - cwsSpace cwsMark cwsUndefined
typedef unsigned short int	CWC;	// cw code - 2 byte

typedef struct	{
_TS		_tsCwt;	// time in symbol time
CWS		cwsCwt;	// cwsSpace cwsMark cwsUndefined
}		CWT;

typedef CWC *	PCWC;
typedef CWT *	PCWT;

CT		CtElemCwc( CWC );	// count of dits and dahs
CWC		CwcReverseCwc( CWC );

CWC		CwcFromCu( CU );
SZ		SzFromCwc( CWC );

R		RCwPraSzDD( PRA, SZ, D, D );
R		RCwPraSzuDD( PRA, SZU, D, D );

#endif

