/* Modnumlib Scicos interfacing function * Copyright (C) 2009 Alan Layec * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ /* overlaprsr Scicos right shift register with memo word block * Type 4 simulation function ver 1.0 - scilab-2.6&2.7 * 24 Décembre 2004 Author : - IRCOM GROUP - A.Layec */ /* REVISION HISTORY : * $Log$ */ #include "modnum_lib.h" #include "scicos_block.h" /* Cette fonction de simulation décale le vecteur reçu en entrée de nz * cases vers la droite et le recopie en sortie y. L'execendent du mot * décalé est stocké dans Z puis placé au début du vecteur suivant. * * Entrée réguliere : u[0..nu-1] vecteur d'entrée à décaler * Sortie reguliere : y[0..nu-1] vecteur de sortie décalé * * Entrée évènementielle : néant * Sortie évènementielle : néant * * Paramètres entier : insz[0] : taille du vecteur en entrée * nz : longueur du mot mémoire */ /*prototype*/ void overlaprsr(scicos_block *block,int flag) { /*Déclaration des variables*/ double *y; double *u; double *z; int nu,nd,l; /*Récupération des adresses des ports réguliers*/ y=(double *)block->outptr[0]; u=(double *)block->inptr[0]; z=block->z; /*Récupération de la taille du port d'entrée*/ nu=block->insz[0]; /*Récupération de la longueur du mot mémoire*/ nd=block->ipar[0]; /* Le flag1 place le mot décalé dans y*/ if(flag==1) { copyd_c(&nu,z,y); } /* le flag 2 décale à droite le vecteur d'entrée et * mémorise l'excedent du mot vecteur d'entrée dans z */ else if(flag==2) { copyd_c(&nd,&z[nu],&z[0]); copyd_c(&nu,u,&z[nd]); } }