diff options
Diffstat (limited to 'js/IntegerOp/EXTRACTBITS.js')
-rw-r--r-- | js/IntegerOp/EXTRACTBITS.js | 230 |
1 files changed, 228 insertions, 2 deletions
diff --git a/js/IntegerOp/EXTRACTBITS.js b/js/IntegerOp/EXTRACTBITS.js index 187b2914..2d93c8e2 100644 --- a/js/IntegerOp/EXTRACTBITS.js +++ b/js/IntegerOp/EXTRACTBITS.js @@ -1,3 +1,229 @@ -Syntax error in input LexToken(EOL,'\n ',1,3407) /* autogenerated from "macros/IntegerOp/EXTRACTBITS.sci" */ -None +function EXTRACTBITS() { +EXTRACTBITS.prototype.get = function EXTRACTBITS() { +} +EXTRACTBITS.prototype.set = function EXTRACTBITS() { +x=arg1; +graphics=arg1.graphics; +exprs=graphics.exprs; +model=arg1.model; +while (true) { +[ok,Datatype,rule,bit,scal,exprs]=scicos_getvalue([msprintf(gettext("Set %s block parameters"),"EXTRACTBITS")," ",gettext("Bits Extraction")," ",gettext(" - Bits to Extract:"),gettext(" 1 Upper Half"),gettext(" 2 Lower Half"),gettext(" 3 Range from MSB"),gettext(" 4 Range to LSB"),gettext(" 5 Range of Bits"),gettext(" - Number of Bits or Index of bit : Index 0 is LSB"),gettext(" If \'Bits to Extract\' is set to \'Range of bits\': [Start, End]")," "],[msprintf(gettext("Data Type %s"),"(3:int32, 4:int16, 5:int8, ...)"),gettext("Bits to extract"),gettext("Number of Bits or Index of Bit"),gettext("Treat Bit Field as an Integer (0:No, 1:Yes)")],list("vec",1,"vec",1,"vec",-1,"vec",1),exprs); +if (!ok) { +break +} +bitstr=strcat(string(bit.slice())," "); +if ((rule<1)||(rule>5)) { +block_parameter_error(msprintf(gettext("Wrong value for \'%s\' parameter: %d."),gettext("Bits to Extract"),rule),msprintf(gettext("Must be in the interval %s."),"[1, 5]")); +ok=None; +} else if (scal<0||scal>1) { +block_parameter_error(msprintf(gettext("Wrong value for \'%s\' parameter: %d."),gettext("Treat Bit Field as an Integer"),scal),msprintf(gettext("Must be in the interval %s."),"[0, 1]")); +ok=None; +} else { +in1=[model.in1,model.in2]; +bit=int(bit); +rule=int(rule); +if ((rule==3)||(rule==4)) { +if ((size(bit,"*")!=1)) { +block_parameter_error(msprintf(gettext("Wrong size for \'%s\' parameter: %s."),gettext("Number of Bits or Index of Bit"),bitstr),gettext("Must be a single value.")); +ok=None; +} else { +numb=bit; +} +} else if ((rule==5)) { +if ((size(bit,"*")!=2)) { +block_parameter_error(msprintf(gettext("Wrong size for \'%s\' parameter: %s."),gettext("Number of Bits or Index of Bit"),bitstr),gettext("Must have this form: [Start, End].")); +ok=None; +} else if (bit(1)>bit(2)) { +block_parameter_error(msprintf(gettext("Wrong values for \'%s\' parameter: %s."),gettext("Number of Bits or Index of Bit"),bitstr),msprintf(gettext("\'Start\' must be less than \'End\'."))); +ok=None; +} else { +numb=bit(2)-bit(1); +} +} else { +bit=0; +numb=[]; +} +} +if (ok) { +if ((Datatype==3||Datatype==6)) { +if (or(bit.slice()>31)||or(bit.slice()<0)) { +block_parameter_error(msprintf(gettext("Wrong value for \'%s\' parameter: %s."),gettext("Number of Bits or Index of Bit"),bitstr),msprintf(gettext("Indexes must be in the interval %s."),"[0, 31]")); +ok=None; +} +switch (rule) { +case 1: +switch (scal) { +case 0: +model.sim=list("extract_bit_32_UH0",4); +case 1: +switch (Datatype) { +case 3: +model.sim=list("extract_bit_32_UH1",4); +case 6: +model.sim=list("extract_bit_u32_UH1",4); +} +} +case 2: +model.sim=list("extract_bit_32_LH",4); +case 3: +switch (scal) { +case 0: +model.sim=list("extract_bit_32_MSB0",4); +case 1: +switch (Datatype) { +case 3: +model.sim=list("extract_bit_32_MSB1",4); +case 6: +model.sim=list("extract_bit_u32_MSB1",4); +} +} +case 4: +model.sim=list("extract_bit_32_LSB",4); +case 5: +switch (scal) { +case 0: +model.sim=list("extract_bit_32_RB0",4); +case 1: +switch (Datatype) { +case 3: +model.sim=list("extract_bit_32_RB1",4); +case 6: +model.sim=list("extract_bit_u32_RB1",4); +} +} +} +} else if ((Datatype==4||Datatype==7)) { +if (or(bit.slice()>15)||or(bit.slice()<0)) { +block_parameter_error(msprintf(gettext("Wrong value for \'%s\' parameter: %s."),gettext("Number of Bits or Index of Bit"),bitstr),msprintf(gettext("Indexes must be in the interval %s."),"[0, 15]")); +ok=None; +} +switch (rule) { +case 1: +switch (scal) { +case 0: +model.sim=list("extract_bit_16_UH0",4); +case 1: +switch (Datatype) { +case 4: +model.sim=list("extract_bit_16_UH1",4); +case 7: +model.sim=list("extract_bit_u16_UH1",4); +} +} +case 2: +model.sim=list("extract_bit_16_LH",4); +case 3: +switch (scal) { +case 0: +model.sim=list("extract_bit_16_MSB0",4); +case 1: +switch (Datatype) { +case 4: +model.sim=list("extract_bit_16_MSB1",4); +case 7: +model.sim=list("extract_bit_u16_MSB1",4); +} +} +case 4: +model.sim=list("extract_bit_16_LSB",4); +case 5: +switch (scal) { +case 0: +model.sim=list("extract_bit_16_RB0",4); +case 1: +switch (Datatype) { +case 4: +model.sim=list("extract_bit_16_RB1",4); +case 7: +model.sim=list("extract_bit_u16_RB1",4); +} +} +} +} else if ((Datatype==5||Datatype==8)) { +if (or(bit.slice()>7)||or(bit.slice()<0)) { +block_parameter_error(msprintf(gettext("Wrong value for \'%s\' parameter: %s."),gettext("Number of Bits or Index of Bit"),bitstr),msprintf(gettext("Indexes must be in the interval %s."),"[0, 7]")); +ok=None; +} +switch (rule) { +case 1: +switch (scal) { +case 0: +model.sim=list("extract_bit_8_UH0",4); +case 1: +switch (Datatype) { +case 5: +model.sim=list("extract_bit_8_UH1",4); +case 8: +model.sim=list("extract_bit_u8_UH1",4); +} +} +case 2: +model.sim=list("extract_bit_8_LH",4); +case 3: +switch (scal) { +case 0: +model.sim=list("extract_bit_8_MSB0",4); +case 1: +switch (Datatype) { +case 5: +model.sim=list("extract_bit_8_MSB1",4); +case 8: +model.sim=list("extract_bit_u8_MSB1",4); +} +} +case 4: +model.sim=list("extract_bit_8_LSB",4); +case 5: +switch (scal) { +case 0: +model.sim=list("extract_bit_8_RB0",4); +case 1: +switch (Datatype) { +case 5: +model.sim=list("extract_bit_8_RB1",4); +case 8: +model.sim=list("extract_bit_u8_RB1",4); +} +} +} +} else { +block_parameter_error(msprintf(gettext("Wrong value for \'%s\' parameter: %d."),gettext("Data Type"),Datatype),msprintf(gettext("Must be in the interval %s."),"[3, 8]")); +ok=None; +} +} +if (ok) { +it=Datatype; +ot=Datatype; +out=[1,1]; +[model,graphics,ok]=set_io(model,graphics,list(in1,it),list(out,ot),[],[]); +} +if (ok) { +graphics.exprs=exprs; +model.ipar=[int(bit.slice()),int(numb.slice())]; +x.graphics=graphics; +x.model=model; +break +} +} +} +EXTRACTBITS.prototype.define = function EXTRACTBITS() { +numb=[]; +model=scicos_model(); +model.sim=list("extract_bit_32_UH0",4); +model.in1=1; +model.in2=1; +model.out=1; +model.out2=1; +model.intyp=3; +model.outtyp=3; +model.ipar=[0,numb]; +model.blocktype="c"; +model.dep_ut=[true,None]; +exprs=[sci2exp(3),sci2exp(1),sci2exp(0),sci2exp(0)]; +gr_i=[]; +x=standard_define([4,2],model,exprs,gr_i); +} +EXTRACTBITS.prototype.details = function EXTRACTBITS() { +} +} |