added dummy protocol without real controller
This commit is contained in:
60
dumprot.c
Normal file
60
dumprot.c
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
#include "ascon.h"
|
||||||
|
#include "ascon.i"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* this is a scriptcontext driver connecting to its own sics server
|
||||||
|
* after a send command the configured polling script is called repeatedly
|
||||||
|
* with the sent command as argument until it returns something else than 0
|
||||||
|
*
|
||||||
|
* Markus Zolliker Aug 2011
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
int DumProtHandler(Ascon *a)
|
||||||
|
{
|
||||||
|
Tcl_Interp *pTcl = InterpGetTcl(pServ->pSics);
|
||||||
|
int ret, l;
|
||||||
|
char *result = NULL;
|
||||||
|
int iRet = 1;
|
||||||
|
|
||||||
|
switch (a->state) {
|
||||||
|
case AsconConnectStart:
|
||||||
|
case AsconConnecting:
|
||||||
|
a->state = AsconConnectDone;
|
||||||
|
break;
|
||||||
|
case AsconWriteStart:
|
||||||
|
DynStringInsert(a->wrBuffer, " ", 0);
|
||||||
|
DynStringInsert(a->wrBuffer, a->hostport, 0);
|
||||||
|
case AsconWriting:
|
||||||
|
a->state = AsconWriteDone;
|
||||||
|
break;
|
||||||
|
case AsconReadStart:
|
||||||
|
case AsconReading:
|
||||||
|
ret = Tcl_EvalEx(pTcl, GetCharArray(a->wrBuffer), l, 0);
|
||||||
|
result = (char *) Tcl_GetStringResult(pTcl);
|
||||||
|
DynStringCopy(a->rdBuffer, result);
|
||||||
|
if (ret != TCL_OK || strcmp(result, "0") != 0) {
|
||||||
|
a->state = AsconReadDone;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
static int DumProtInit(Ascon * a, SConnection * con, int argc, char *argv[])
|
||||||
|
{
|
||||||
|
/* argv[1] is the polling script. stored in hostport */
|
||||||
|
a->hostport = strdup(argv[1]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
void AddDumProtocol()
|
||||||
|
{
|
||||||
|
static AsconProtocol dumprot;
|
||||||
|
dumprot.name = "dumprot";
|
||||||
|
dumprot.handler = DumProtHandler;
|
||||||
|
dumprot.init = DumProtInit;
|
||||||
|
AsconInsertProtocol(&dumprot);
|
||||||
|
}
|
Reference in New Issue
Block a user