#include "scicos_block.h" #include <math.h> extern void sciprint(); void edgetrig(scicos_block *block,int flag) { double z= block->z[0],u=block->inptr[0][0]; if(flag==2||flag==6){ block->z[0]=u; }else if(flag==1){ if(block->ipar[0]!=0){ z=z*block->ipar[0]; u=u*block->ipar[0]; if(((z<=0)&(u>0))||((z<0)&(u>=0))) { block->outptr[0][0]=1.; }else{ block->outptr[0][0]=0.; } } else{ /* rising and falling edge */ if(((z<=0)&(u>0))||((z<0)&(u>=0))||((z>0)&(u<=0))||((z>=0)&(u<0))){ block->outptr[0][0]=1.; }else{ block->outptr[0][0]=0.; } } }else if (flag==4) { if (block->ng>0){ set_block_error(-1); sciprint("Trigger block must have discrete time input."); return; } } }