split rig and rot commands into tclrig.c and tclrot.c

git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@893 7ae35d74-ebe9-4afe-98af-79ac388436b8
Hamlib-1.1.3
Stéphane Fillod, F8CFE 2002-01-22 00:53:01 +00:00
rodzic 8f501050ed
commit 27e30ab322
1 zmienionych plików z 9 dodań i 133 usunięć

Wyświetl plik

@ -1,8 +1,8 @@
/*
* Hamlib tcl/tk bindings - main file
* Copyright (c) 2001 by Stephane Fillod
* Copyright (c) 2001,2002 by Stephane Fillod
*
* $Id: hamlibtcl.c,v 1.2 2001-07-13 19:08:15 f4cfe Exp $
* $Id: hamlibtcl.c,v 1.3 2002-01-22 00:53:01 fillods Exp $
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
@ -27,138 +27,11 @@
#include <string.h>
#include <tcl.h>
#include <hamlib/rig.h>
#include <hamlib/rotator.h>
#include <misc.h>
/*
* since there's no long long support in tcl API,
* freq_t is mapped to double object, which has enough
* significant digits for frequencies up to tens of GHz.
*/
int DoRig(ClientData clientData, Tcl_Interp *interp,
int objc, Tcl_Obj *CONST objv[]);
int DoRigLib(ClientData clientData, Tcl_Interp *interp,
int objc, Tcl_Obj *CONST objv[]);
int
DoRigLib(ClientData clientData, Tcl_Interp *interp,
int objc, Tcl_Obj *CONST objv[])
{
Tcl_Obj *resultPtr;
int error;
char *subcmd;
/* objc gives the number of "objects" = arguments to
the command */
if (objc != 2 && objc != 3) {
Tcl_WrongNumArgs(interp, 1, objv, "cmd ?model?");
return TCL_ERROR;
}
/* Process the arguments
objv is an array holding the arguments */
/* Use Tcl_GetIntFromObj to put an integer value
into a variable from the argument list */
subcmd = Tcl_GetString(objv[1]);
resultPtr = Tcl_GetObjResult(interp);
/* TODO: make use of flex here! */
if (!strcasecmp(subcmd, "version")) {
Tcl_SetStringObj(resultPtr, hamlib_version, -1);
} else if (!strcasecmp(subcmd, "help")) {
Tcl_SetStringObj(resultPtr, "no help yet!", -1);
} else if (!strcasecmp(subcmd, "init")) {
rig_model_t model;
RIG *tcl_rig;
char rigcmd_name[16];
static int rigcmd_cpt=0;
error = Tcl_GetIntFromObj(interp, objv[2], (int*)&model);
if (error != TCL_OK)
return error;
tcl_rig = rig_init(model);
if (!tcl_rig)
return TCL_ERROR;
sprintf(rigcmd_name, "rig%d", rigcmd_cpt++);
Tcl_CreateObjCommand(interp, rigcmd_name, DoRig,
(ClientData)tcl_rig, (Tcl_CmdDeleteProc *)NULL);
Tcl_SetStringObj(resultPtr, rigcmd_name, -1);
} else {
return TCL_ERROR;
}
return TCL_OK;
}
int
DoRig(ClientData clientData, Tcl_Interp *interp,
int objc, Tcl_Obj *CONST objv[])
{
Tcl_Obj *resultPtr;
int error;
char *subcmd;
RIG *tcl_rig = (RIG*)clientData;
if (!tcl_rig)
return TCL_ERROR;
#if 0
/* objc gives the number of "objects" = arguments to
the command */
if (!(objc == 2 || objc == 3)) {
Tcl_WrongNumArgs(interp, 1, objv, "var1 var2 ?var3?");
return TCL_ERROR;
}
#endif
/* Process the arguments
objv is an array holding the arguments */
/* Use Tcl_GetIntFromObj to put an integer value
into a variable from the argument list */
subcmd = Tcl_GetString(objv[1]);
resultPtr = Tcl_GetObjResult(interp);
/* TODO: make use of flex here! */
if (!strcasecmp(subcmd, "open")) {
rig_open(tcl_rig);
return TCL_OK;
} else if (!strcasecmp(subcmd, "set_freq")) {
double d;
freq_t freq;
error = Tcl_GetDoubleFromObj(interp, objv[2], &d);
if (error != TCL_OK)
return error;
freq = (freq_t)d;
rig_set_freq(tcl_rig, RIG_VFO_CURR, freq);
return TCL_OK;
} else if (!strcasecmp(subcmd, "get_strength")) {
int strength;
rig_get_strength(tcl_rig, RIG_VFO_CURR, &strength);
Tcl_SetIntObj(resultPtr, strength);
return TCL_OK;
} else if (!strcasecmp(subcmd, "close")) {
rig_close(tcl_rig);
return TCL_OK;
} else if (!strcasecmp(subcmd, "cleanup")) {
rig_cleanup(tcl_rig);
return TCL_OK;
} else {
return TCL_ERROR;
}
return TCL_OK;
}
#include "tclrig.h"
#include "tclrot.h"
int Hamlib_Init(Tcl_Interp *interp)
@ -173,6 +46,9 @@ int Hamlib_Init(Tcl_Interp *interp)
Tcl_CreateObjCommand(interp, "rig", DoRigLib,
(ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
Tcl_CreateObjCommand(interp, "rot", DoRotLib,
(ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
return TCL_OK;
}