Low level routine
eng -
fr
intmod_num_lib - interfacing routine of low-level routine communication library
/* intmod_num_lib.c scilab interface routine
* IRCOM GROUP - Author : A.Layec
*/
/* REVISION HISTORY :
* $Log$
*/
#include "stack-c.h"
#include "mex.h"
void genint_c __PARAMS((int *n, int *m, int *type, double *y));
void surecht_c __PARAMS((int *opt,int *n,int *nech,int *init_c,double *u,double *y));
void modpsk_c __PARAMS((int *n,int *m,double *u,double *i_c, double *q_c));
int intgenint_c(char *fname)
{
static int l1, m1, n1; /*entrée 1*/
static int l2, m2, n2; /*entrée 2*/
static int l3, m3, n3; /*entrée 3*/
static int l4; /*sortie 1*/
static int minlhs=1, maxlhs=1, minrhs=3, maxrhs=3;
/* Check number of inputs and outputs (lhs=1) */
CheckRhs(minrhs,maxrhs) ;
CheckLhs(minlhs,maxlhs) ;
/*Get input and create output*/
GetRhsVar(1,"i",&m1,&n1,&l1);
GetRhsVar(2,"i",&m2,&n2,&l2);
GetRhsVar(3,"i",&m3,&n3,&l3);
CreateVar(4,"d",istk(l1),&n1,&l4);
/*Check dimensions*/
/*TO BE DONE*/
/*Appel bin_c*/
genint_c(istk(l1),istk(l2),istk(l3),stk(l4));
/*Return output variable*/
LhsVar(1) = 4;
return 0;
}
int intsurecht_c(char *fname)
{
static int l1,m1,n1; /*entrée 1*/
static int l2,m2,n2; /*entrée 2*/
static int l3,m3,n3; /*entrée 3*/
static int l4,m4,n4; /*entrée 4*/
static int l5; /*sortie 1*/
static int minlhs=1, maxlhs=1,minrhs=4,maxrhs=4;
static int k;
/* Check number of inputs and outputs (lhs=1) */
CheckRhs(minrhs,maxrhs);
CheckLhs(minlhs,maxlhs);
/*Get input and create output*/
GetRhsVar(1,"i",&m1,&n1,&l1); /*opt : option -scalaire*/
GetRhsVar(2,"i",&m2,&n2,&l2); /*nech : facteur de surechantillonnage -scalaire-*/
GetRhsVar(3,"i",&m3,&n3,&l3); /*init_c : valeur du compteur initial -scalaire-*/
GetRhsVar(4,"d",&m4,&n4,&l4); /*u : vecteur d'entrée*/
k=*istk(l2)*m4;
sciprint("k=%d\r\n",k);
CreateVar(5,"d",&k,&n4,&l5); /*y : vecteur de sortie*/
/*Check dimensions*/
/*TO BE DONE*/
/*Appel surech_c*/
surecht_c(istk(l1),&m4,istk(l2),istk(l3),stk(l4),stk(l5));
/*Return output variable*/
LhsVar(1) = 5;
return 0;
}
int intmodpsk_c(char *fname)
{
static int l1,m1,n1; /*entrée 1*/
static int l2,m2,n2; /*entrée 2*/
static int l3; /*sortie 2*/
static int l4; /*sortie 1*/
static int minlhs=2, maxlhs=2,minrhs=2,maxrhs=2;
/* Check number of inputs and outputs (lhs=1) */
CheckRhs(minrhs,maxrhs) ;
CheckLhs(minlhs,maxlhs) ;
/*Get input and create output*/
GetRhsVar(1,"i",&m1,&n1,&l1); /*nbr d'états -scalaire-*/
GetRhsVar(2,"d",&m2,&n2,&l2); /*vecteur d'entrée*/
CreateVar(3,"d",&m2,&n2,&l3); /*vecteur i*/
CreateVar(4,"d",&m2,&n2,&l4); /*vecteur q*/
/*Check dimensions*/
/*TO BE DONE*/
/*Appel bin_c*/
modpsk_c(&m2,istk(l1),stk(l2),stk(l3),stk(l4));
/*Return output variable*/
LhsVar(1) = 3;
LhsVar(2) = 4;
return 0;
}
static GenericTable Tab[]={
{(Myinterfun)sci_gateway, intgenint_c,"error msg"},
{(Myinterfun)sci_gateway, intmodpsk_c,"error msg"},
{(Myinterfun)sci_gateway, intsurecht_c,"error msg"},
};
int C2F(intmod_num_lib)()
{ Rhs = Max(0, Rhs);
(*(Tab[Fin-1].f))(Tab[Fin-1].name,Tab[Fin-1].F);
return 0;
}
IRCOM Group
Alan Layec