mmtty/LogConv.h

249 lines
6.3 KiB
C
Raw Normal View History

//Copyright+LGPL
//-----------------------------------------------------------------------------------------------------------------------------------------------
// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba
//-----------------------------------------------------------------------------------------------------------------------------------------------
// This file is part of MMTTY.
// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
// MMTTY 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 Lesser General Public License for more details.
// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see
// <http://www.gnu.org/licenses/>.
//-----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef LogConvH
#define LogConvH
#include "LogFile.h"
extern const char *MONT1[];
extern const char *MONT2[];
//*************************************************************
// <20><><EFBFBD>O<EFBFBD>ϊ<EFBFBD><CF8A>̊<EFBFBD><CC8A>{<7B>N<EFBFBD><4E><EFBFBD>X
//
class CLogConv
{
protected:
int m_Type; // 0-TEXT, 1-LOG200, 2-HAMLOG, 3-DBASE
int m_Mode; // 0-Read, 1-Write
FILE *m_fp;
AnsiString m_FileName; // <20>ϊ<EFBFBD><CF8A><EFBFBD><EFBFBD>̃t<CC83>@<40>C<EFBFBD><43><EFBFBD><EFBFBD>
public:
CLogConv();
virtual ~CLogConv();
virtual int IsOpen(void){return m_fp != NULL ? 1 : 0;};
virtual int Open(LPCSTR pName)=0;
virtual int Create(LPCSTR pName)=0;
virtual int Close(void)=0;
virtual int Read(SDMMLOG *sp)=0;
virtual int Write(SDMMLOG *sp)=0;
};
#define TEXTCONVMAX 64
typedef struct {
int w;
AnsiString Key;
}TCONV;
//*************************************************************
// <20>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>A<EFBFBD>N<EFBFBD>Z<EFBFBD>X<EFBFBD>̃N<CC83><4E><EFBFBD>X
//
class CLogText : public CLogConv
{
public:
int m_Double;
int m_Delm;
TCONV m_rConv[TEXTCONVMAX];
TCONV m_tConv[TEXTCONVMAX];
int m_UTC;
int m_err;
protected:
char m_bf[2048]; // <20>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>o<EFBFBD>b<EFBFBD>t<EFBFBD>@
private:
int Text2MMLOG(SDMMLOG *sp, LPSTR p, int &err);
void MMLOG2Text(LPSTR t, SDMMLOG *sp);
public:
CLogText();
virtual int Open(LPCSTR pName);
virtual int Create(LPCSTR pName);
virtual int Close(void);
virtual int Read(SDMMLOG *sp);
virtual int Write(SDMMLOG *sp);
};
void MMLOG2Text(LPSTR t, SDMMLOG *sp, AnsiString &Key);
int Text2MMLOG(SDMMLOG *sp, LPCSTR s, AnsiString &Key);
extern const LPCSTR ConvTbl[];
extern CLogText LogText;
//*************************************************************
// <20>k<EFBFBD>n<EFBFBD>f<EFBFBD>Q<EFBFBD>O<EFBFBD>O<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>A<EFBFBD>N<EFBFBD>Z<EFBFBD>X<EFBFBD>̃N<CC83><4E><EFBFBD>X
//
#define LOG200WIDTH 200
class CLog200 : public CLogConv
{
public:
int m_Index;
int m_err;
protected:
char m_bf[200]; // <20>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>o<EFBFBD>b<EFBFBD>t<EFBFBD>@
private:
public:
CLog200();
virtual int Open(LPCSTR pName);
virtual int Create(LPCSTR pName);
virtual int Close(void);
virtual int Read(SDMMLOG *sp);
virtual int Write(SDMMLOG *sp);
};
//*************************************************************
// <20>g<EFBFBD>`<60>l<EFBFBD>k<EFBFBD>n<EFBFBD>f<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>A<EFBFBD>N<EFBFBD>Z<EFBFBD>X<EFBFBD>̃N<CC83><4E><EFBFBD>X
//
#pragma option -a- // <20>p<EFBFBD>b<EFBFBD>N<EFBFBD>̎w<CC8E><77>
typedef struct {
char Memo; // 03h=<3D><>̨<EFBFBD><CCA8><EFBFBD>ޖ<EFBFBD><DE96><EFBFBD> 83h=<3D><>̨<EFBFBD><CCA8><EFBFBD>ޗL<DE97><4C><EFBFBD>iHAMLOG<4F>ł<EFBFBD> 1Ah<41>j
char YY, MM, DD; // <20>ŏI<C58F>X<EFBFBD>V<EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD>
long Max; // ں<><DABA>ތ<EFBFBD><DE8C><EFBFBD>
WORD HeadLen; // ͯ<>ނ̒<DE82><CC92><EFBFBD><EFBFBD>iHAMLOG.DBS<42><53> 449<34>j
WORD DataLen; // ں<><DABA>ނ̒<DE82><CC92><EFBFBD><EFBFBD>iHAMLOG.DBS<42><53> 58<35>j
char dummy[20]; // 00h
}DBSHD;
typedef struct {
char Memo; // 03h=<3D><>̨<EFBFBD><CCA8><EFBFBD>ޖ<EFBFBD><DE96><EFBFBD> 83h=<3D><>̨<EFBFBD><CCA8><EFBFBD>ޗL<DE97><4C><EFBFBD>iHAMLOG<4F>ł<EFBFBD> 1Ah<41>j
char YY, MM, DD; // <20>ŏI<C58F>X<EFBFBD>V<EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD>
long Max; // ں<><DABA>ތ<EFBFBD><DE8C><EFBFBD>
char dm1;
char m1; // 01h
char dm2;
char dummy[21]; // 00h
char dummy2[255-32]; // 00h
char term; // 1ah
}DBRHD;
typedef struct {
char Name[11];
BYTE Type;
BYTE dm1[4];
BYTE Len;
BYTE dm2[15];
}DBSLOT;
typedef struct {
char del[1]; /* <09><EFBFBD>}<7D>[<5B>N */
char calls[7]; /* <09><>ٻ<EFBFBD><D9BB> */
char potbl[3]; /* <09>ړ<EFBFBD><DA93>ر */
char code[6]; /* JCC<43><43><EFBFBD><EFBFBD> */
char glid[6]; /* <09><>د<EFBFBD><D8AF>۹<EFBFBD><DBB9><EFBFBD> */
char freq[4]; /* <09><><EFBFBD>g<EFBFBD><67> */
char mode[3]; /* Ӱ<><D3B0> */
char name[12]; /* <09><><EFBFBD><EFBFBD> */
char qsl [1]; /* QSL via */
char send[1]; /* QSL SEND */
char rcv[1]; /* QSL RCV */
char date[3]; /* <09><><EFBFBD>t */
char time[2]; /* <09><><EFBFBD><EFBFBD> */
char hiss[2]; /* HIS RST */
char myrs[2]; /* MY RST */
long ofs; /* HAMLOG.DBR <20>̾<EFBFBD>ı<EFBFBD><C4B1>ڽ */
}SDHAMLOG;
typedef struct { /* DBR<42>̃t<CC83>B<EFBFBD>[<5B><><EFBFBD>h<EFBFBD>ʒu<CA92>f<EFBFBD>[<5B>^ */
BYTE LenQTH;
BYTE LenREM1;
BYTE LenREM2;
}FHDDBR;
#pragma option -a. // <20>p<EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>̎w<CC8E><77>
class CHamLog : public CLogConv
{
public:
int m_Index;
int m_err;
protected:
DBSHD m_hd; // DBS<42>w<EFBFBD>b<EFBFBD>_
SDHAMLOG m_RecBuf; // <20><><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>o<EFBFBD>b<EFBFBD>t<EFBFBD>@
AnsiString m_DBRName; // DBR<42>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̖<EFBFBD><CC96>O
FILE *m_dbrfp; // DBR<42>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̃t<CC83>@<40>C<EFBFBD><43><EFBFBD>|<7C>C<EFBFBD><43><EFBFBD>^
DBRHD m_dbrhd; // DBR<42>w<EFBFBD>b<EFBFBD>_
private:
int Seek(DWORD Index);
BOOL MakeHD(void);
public:
CHamLog();
virtual int Open(LPCSTR pName);
virtual int Create(LPCSTR pName);
virtual int Close(void);
virtual int Read(SDMMLOG *sp);
virtual int Write(SDMMLOG *sp);
};
void HAMLOGtoMMLOG(SDMMLOG *sp, SDHAMLOG *hp, FILE *dbrfp);
int MMLOGtoHAMLOG(SDHAMLOG *hp, SDMMLOG *sp, FILE *dbrfp);
void AddMMLOGKey(AnsiString &REM1, AnsiString &REM2, LPCSTR s, LPCSTR pKey);
void SetMMLOGKey(SDMMLOG *sp, LPSTR bf);
//*************************************************************
// ADIF<49>A<EFBFBD>N<EFBFBD>Z<EFBFBD>X<EFBFBD>̃N<CC83><4E><EFBFBD>X
//
class CLogADIF : public CLogConv
{
public:
protected:
char m_bf[1024]; // <20>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>o<EFBFBD>b<EFBFBD>t<EFBFBD>@
LPSTR m_p;
int m_conv;
private:
void MMLOG2ADIF(LPSTR t, SDMMLOG *sp);
void SetData(SDMMLOG *sp, LPCSTR pKey, LPSTR pData);
void AdjustData(SDMMLOG *sp);
void OutF(int &col, FILE *fp, LPCSTR fmt, ...);
public:
CLogADIF();
virtual int Open(LPCSTR pName);
virtual int Create(LPCSTR pName);
virtual int Close(void);
virtual int Read(SDMMLOG *sp);
virtual int Write(SDMMLOG *sp);
};
//*************************************************************
// Cabrillo <20>A<EFBFBD>N<EFBFBD>Z<EFBFBD>X<EFBFBD>̃N<CC83><4E><EFBFBD>X
//
class CLogCabrillo : public CLogConv
{
public:
protected:
char m_bf[1024]; // <20>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>o<EFBFBD>b<EFBFBD>t<EFBFBD>@
LPSTR m_p;
AnsiString m_SNR;
private:
void MMLOG2Cabrillo(LPSTR t, SDMMLOG *sp);
void AdjustData(SDMMLOG *sp);
public:
CLogCabrillo();
virtual int Open(LPCSTR pName);
virtual int Create(LPCSTR pName);
virtual int Close(void);
virtual int Read(SDMMLOG *sp);
virtual int Write(SDMMLOG *sp);
};
#endif