Mercurial > hg > fxanalyse
view KKFX80E.c @ 268:ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Reorganize the beatnote specific variables in arrays indexed by the
beatnote enum constants LO, HG, SR. Also reorganize DDS frequency
related variables in arrays indexed by the DDS channel number.
author | Daniele Nicolodi <daniele.nicolodi@obspm.fr> |
---|---|
date | Thu, 09 Jul 2015 23:11:00 +0200 |
parents | 3427013e4f70 |
children |
line wrap: on
line source
#include <ctype.h> #include <windows.h> #include <utility.h> #include <ansi_c.h> int (_stdcall *FX_OpenPort)(char **Port) = NULL; void (_stdcall *FX_ClosePort)(void) = NULL; int (_stdcall *FX_SendCommand)(char **Command) = NULL; int (_stdcall *FX_GetReport)(char **Data) = NULL; void (_stdcall *FX_Debug)(BOOL DbgFlag) = NULL; // int (_stdcall *GetFXM)(char **Data) = NULL; // void (_stdcall *Log)(int DbgNum) = NULL; // int (_stdcall *ReadMonitor)(char **Data) = NULL; // BOOL (_stdcall *EnumeratePorts)(char **PortName, char *PortNamePrefix) = NULL; static HMODULE module; static char *errormsg; char * FX_Error(void) { return errormsg; } int FX_Init(void) { FARPROC funcp = NULL; errormsg = ""; module = LoadLibrary("KK_FX80E.dll"); if (! module) return 0; funcp = GetProcAddress(module, "FX_OpenPort"); if (! funcp) goto error; FX_OpenPort = (void *)funcp; funcp = GetProcAddress(module, "FX_ClosePort"); if (! funcp) goto error; FX_ClosePort = (void *)funcp; funcp = GetProcAddress(module, "FX_SendCommand"); if (! funcp) goto error; FX_SendCommand = (void *)funcp; funcp = GetProcAddress(module, "FX_GetReport"); if (! funcp) goto error; FX_GetReport = (void *)funcp; funcp = GetProcAddress(module, "FX_Debug"); if (! funcp) goto error; FX_Debug = (void *)funcp; return 1; error: FreeLibrary(module); return 0; } void FX_Free(void) { FreeLibrary(module); } int FX_Open(char *port) { int rv = FX_OpenPort(&port); if (! rv) errormsg = port; return rv; } void FX_Close(void) { FX_ClosePort(); } int FX_Send(char cmd) { char *p = &cmd; int rv = FX_SendCommand(&p); if (! rv) errormsg = p; return rv; } int FX_Recv(char **ret, int timeout) { int rv; char *data; double mark = Timer(); do { data = "."; rv = FX_GetReport(&data); if ((Timer() - mark) > timeout) { rv = 0; data = "Function FX_Recv: Timeout"; } Delay(0.01); } while ((! data) && (rv == 1)); if (! rv) { errormsg = data; data = NULL; } if (ret) *ret = data; return rv; }