[PD-cvs] externals/iem/pdoctave pdoctave_command.c, 1.2, 1.3 pdoctave_dataframe.c, 1.3, 1.4 pdoctave_dataframe.h, 1.2, 1.3 pdoctave_get.c, 1.4, 1.5 write_shared_mem.cc, 1.4, 1.5
Franz Zotter
fzotter at users.sourceforge.net
Sun Mar 26 23:34:32 CEST 2006
Update of /cvsroot/pure-data/externals/iem/pdoctave
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9797
Modified Files:
pdoctave_command.c pdoctave_dataframe.c pdoctave_dataframe.h
pdoctave_get.c write_shared_mem.cc
Log Message:
pdoctave weekend, yeah! So obviously, total nerdness has struck me already. IAOUOIASSFAIUOOOOOOAA!!!
But it works!!!
- Octave error handling for errors of write_shared_mem.cc (i.e. undefined variables).
- Return value for non existent data packages corrected in write_shared_mem.cc (it has to be removeSharedData instead of freeSharedData in exceptional cases)
- opening octave on library startup
- removed annoying post messages
yesyesyes,
perhaps it's time for Georgies threadlib "detach" for pdoctave_get now!
Index: pdoctave_dataframe.h
===================================================================
RCS file: /cvsroot/pure-data/externals/iem/pdoctave/pdoctave_dataframe.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** pdoctave_dataframe.h 25 Mar 2006 13:14:59 -0000 1.2
--- pdoctave_dataframe.h 26 Mar 2006 21:34:29 -0000 1.3
***************
*** 16,20 ****
#define STD_USLEEP_TIME 100
! #define MAX_SLEEP_TIME 2
typedef struct _SharedDataFrame_ SharedDataFrame;
--- 16,20 ----
#define STD_USLEEP_TIME 100
! #define MAX_USLEEP_TIME 5000000
typedef struct _SharedDataFrame_ SharedDataFrame;
Index: pdoctave_command.c
===================================================================
RCS file: /cvsroot/pure-data/externals/iem/pdoctave/pdoctave_command.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** pdoctave_command.c 25 Mar 2006 10:53:12 -0000 1.2
--- pdoctave_command.c 26 Mar 2006 21:34:29 -0000 1.3
***************
*** 59,63 ****
static void pDOctaveCommandBang (PDOctaveCommand *pdoctcmd_obj)
{
! post("command: %s sent", pdoctcmd_obj->oct_command);
writeToOctaveStdIN (pdoctcmd_obj->oct_command);
}
--- 59,63 ----
static void pDOctaveCommandBang (PDOctaveCommand *pdoctcmd_obj)
{
! //post("command: %s sent", pdoctcmd_obj->oct_command);
writeToOctaveStdIN (pdoctcmd_obj->oct_command);
}
***************
*** 83,87 ****
pd_new (pdoctave_command_class);
! post("getpdoctaveinstances returned %d", getPDOctaveInstances());
if (getPDOctaveInstances()<1) {
error("Octave not running, insert a 'pdoctave' object!!");
--- 83,87 ----
pd_new (pdoctave_command_class);
! // post("getpdoctaveinstances returned %d", getPDOctaveInstances());
if (getPDOctaveInstances()<1) {
error("Octave not running, insert a 'pdoctave' object!!");
Index: pdoctave_get.c
===================================================================
RCS file: /cvsroot/pure-data/externals/iem/pdoctave/pdoctave_get.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** pdoctave_get.c 26 Mar 2006 12:47:03 -0000 1.4
--- pdoctave_get.c 26 Mar 2006 21:34:29 -0000 1.5
***************
*** 27,31 ****
t_symbol *name;
! post("getpdoctaveinstances returned %d", getPDOctaveInstances());
if (getPDOctaveInstances()<1) {
error("Octave not running, insert a 'pdoctave' object!!");
--- 27,31 ----
t_symbol *name;
! // post("getpdoctaveinstances returned %d", getPDOctaveInstances());
if (getPDOctaveInstances()<1) {
error("Octave not running, insert a 'pdoctave' object!!");
***************
*** 65,69 ****
cmd +=strlen(cmd);
strcpy (cmd,");\n end\n\0");
! post("pdoctave_get: %s",pdoctget_obj->oct_command);
writeToOctaveStdIN (pdoctget_obj->oct_command);
--- 65,69 ----
cmd +=strlen(cmd);
strcpy (cmd,");\n end\n\0");
! //post("pdoctave_get: %s",pdoctget_obj->oct_command);
writeToOctaveStdIN (pdoctget_obj->oct_command);
***************
*** 141,144 ****
--- 141,145 ----
case UNKNOWN:
post("pdoctave_get: unknown return value");
+ s = gensym("");
return;
}
***************
*** 162,172 ****
blockForWriting (sdf);
pDOctaveGetCommand (pdoctget_obj);
if((sleepUntilWriteUnBlocked (sdf))==0) {
error("pdoctave_get: pd and octave scheduling error, restart pd!");
return;
}
! // waiting for results
! pdoctget_obj->data = getSharedData (sdf);
// converting incoming data
--- 163,178 ----
blockForWriting (sdf);
pDOctaveGetCommand (pdoctget_obj);
+ // waiting for results
if((sleepUntilWriteUnBlocked (sdf))==0) {
error("pdoctave_get: pd and octave scheduling error, restart pd!");
+ unBlockForReading (sdf);
return;
}
! if ((pdoctget_obj->data = getSharedData (sdf))==0) {
! error("pdoctave_get: empty data package received");
! unBlockForReading (sdf);
! return;
! }
// converting incoming data
Index: pdoctave_dataframe.c
===================================================================
RCS file: /cvsroot/pure-data/externals/iem/pdoctave/pdoctave_dataframe.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** pdoctave_dataframe.c 26 Mar 2006 12:47:03 -0000 1.3
--- pdoctave_dataframe.c 26 Mar 2006 21:34:29 -0000 1.4
***************
*** 1,4 ****
#include "pdoctave_dataframe.h"
! static int scheduling_ok = 1;
SharedDataFrame *newSharedDataFrame ()
--- 1,4 ----
#include "pdoctave_dataframe.h"
! //static int scheduling_ok = 1;
SharedDataFrame *newSharedDataFrame ()
***************
*** 208,238 ****
int sleepUntilReadUnBlocked (SharedDataFrame *sdf)
{
! //alarm(MAX_SLEEP_TIME);
! while ((sdf->block_for_read!=0)&&scheduling_ok)
! sched_yield();
! return scheduling_ok;
}
int sleepUntilReadBlocked (SharedDataFrame *sdf)
{
! //alarm(MAX_SLEEP_TIME);
! while ((sdf->block_for_read==0)&&scheduling_ok)
! sched_yield();
! return scheduling_ok;
}
int sleepUntilWriteUnBlocked (SharedDataFrame *sdf)
{
! //alarm(MAX_SLEEP_TIME);
! while ((sdf->block_for_write!=0)&&scheduling_ok)
! sched_yield();
! return scheduling_ok;
}
int sleepUntilWriteBlocked (SharedDataFrame *sdf)
{
! //alarm(MAX_SLEEP_TIME);
! while ((sdf->block_for_write==0)&&scheduling_ok)
! sched_yield();
! return scheduling_ok;
}
/*
--- 208,246 ----
int sleepUntilReadUnBlocked (SharedDataFrame *sdf)
{
! int elapsed_time=0;
! while ((sdf->block_for_read!=0)&&(elapsed_time<MAX_USLEEP_TIME)) {
! elapsed_time += STD_USLEEP_TIME;
! usleep(STD_USLEEP_TIME);
! }
! return (elapsed_time<MAX_USLEEP_TIME);
}
int sleepUntilReadBlocked (SharedDataFrame *sdf)
{
! int elapsed_time=0;
! while ((sdf->block_for_read==0)&&(elapsed_time<MAX_USLEEP_TIME)) {
! elapsed_time += STD_USLEEP_TIME;
! usleep(STD_USLEEP_TIME);
! }
! return (elapsed_time<MAX_USLEEP_TIME);
}
int sleepUntilWriteUnBlocked (SharedDataFrame *sdf)
{
! int elapsed_time=0;
! while ((sdf->block_for_write!=0)&&(elapsed_time<MAX_USLEEP_TIME)) {
! elapsed_time += STD_USLEEP_TIME;
! usleep(STD_USLEEP_TIME);
! }
! return (elapsed_time<MAX_USLEEP_TIME);
}
int sleepUntilWriteBlocked (SharedDataFrame *sdf)
{
! int elapsed_time=0;
! while ((sdf->block_for_write==0)&&(elapsed_time<MAX_USLEEP_TIME)) {
! elapsed_time += STD_USLEEP_TIME;
! usleep(STD_USLEEP_TIME);
! }
! return (elapsed_time<MAX_USLEEP_TIME);
}
/*
***************
*** 241,245 ****
int timer = 0;
if (sdf) {
! while ((sdf->block_for_read!=0)&&(timer < MAX_SLEEP_TIME)) {
timer += usleep_time;
usleep (usleep_time);
--- 249,253 ----
int timer = 0;
if (sdf) {
! while ((sdf->block_for_read!=0)&&(timer < MAX_USLEEP_TIME)) {
timer += usleep_time;
usleep (usleep_time);
***************
*** 251,255 ****
int timer = 0;
if (sdf) {
! while ((sdf->block_for_read==0)&&(timer < MAX_SLEEP_TIME)) {
timer +=usleep_time;
usleep (usleep_time);
--- 259,263 ----
int timer = 0;
if (sdf) {
! while ((sdf->block_for_read==0)&&(timer < MAX_USLEEP_TIME)) {
timer +=usleep_time;
usleep (usleep_time);
***************
*** 262,266 ****
int timer = 0;
if (sdf) {
! while ((sdf->block_for_write!=0)&&(timer < MAX_SLEEP_TIME)) {
timer +=usleep_time;
usleep (usleep_time);
--- 270,274 ----
int timer = 0;
if (sdf) {
! while ((sdf->block_for_write!=0)&&(timer < MAX_USLEEP_TIME)) {
timer +=usleep_time;
usleep (usleep_time);
***************
*** 273,277 ****
int timer = 0;
if (sdf) {
! while ((sdf->block_for_write==0)&&(timer < MAX_SLEEP_TIME)) {
timer +=usleep_time;
usleep (usleep_time);
--- 281,285 ----
int timer = 0;
if (sdf) {
! while ((sdf->block_for_write==0)&&(timer < MAX_USLEEP_TIME)) {
timer +=usleep_time;
usleep (usleep_time);
Index: write_shared_mem.cc
===================================================================
RCS file: /cvsroot/pure-data/externals/iem/pdoctave/write_shared_mem.cc,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** write_shared_mem.cc 26 Mar 2006 12:47:03 -0000 1.4
--- write_shared_mem.cc 26 Mar 2006 21:34:29 -0000 1.5
***************
*** 67,73 ****
}
if (args(0).is_empty()) {
- pdtype = UNKNOWN;
unBlockForWriting (sdf);
! freeSharedDataFrame (&sdf);
return octave_value();
}
--- 67,72 ----
}
if (args(0).is_empty()) {
unBlockForWriting (sdf);
! removeSharedDataFrame (&sdf);
return octave_value();
}
***************
*** 81,85 ****
error("failed to get new data memory!");
unBlockForWriting (sdf);
! freeSharedDataFrame (&sdf);
return octave_value();
}
--- 80,84 ----
error("failed to get new data memory!");
unBlockForWriting (sdf);
! removeSharedDataFrame (&sdf);
return octave_value();
}
***************
*** 95,99 ****
error("failed to get new data memory!");
unBlockForWriting (sdf);
! freeSharedDataFrame (&sdf);
return octave_value();
}
--- 94,98 ----
error("failed to get new data memory!");
unBlockForWriting (sdf);
! removeSharedDataFrame (&sdf);
return octave_value();
}
***************
*** 107,111 ****
error("failed to get new data memory!");
unBlockForWriting (sdf);
! freeSharedDataFrame (&sdf);
return octave_value();
}
--- 106,110 ----
error("failed to get new data memory!");
unBlockForWriting (sdf);
! removeSharedDataFrame (&sdf);
return octave_value();
}
More information about the Pd-cvs
mailing list