diff options
author | Adhitya Kamakshidasan | 2016-07-13 19:38:36 +0530 |
---|---|---|
committer | GitHub | 2016-07-13 19:38:36 +0530 |
commit | 8c702e995aa4f252b2816b7e905c4c1236673172 (patch) | |
tree | 9045600522c1f246dacb9a29c92573541ef5c013 | |
parent | 23205c355e38c88b79813f477d17522a1281fe54 (diff) | |
parent | 0d1fe1352b7a91629d6ea64aedee2da7e05d248f (diff) | |
download | xcos-on-web-8c702e995aa4f252b2816b7e905c4c1236673172.tar.gz xcos-on-web-8c702e995aa4f252b2816b7e905c4c1236673172.tar.bz2 xcos-on-web-8c702e995aa4f252b2816b7e905c4c1236673172.zip |
Merge pull request #179 from ASP1234/master
Implement SELF_SWITCH Block
-rw-r--r-- | data_structures_correct/CONST_m.js | 19 | ||||
-rw-r--r-- | data_structures_correct/SELF_SWITCH.js | 30 | ||||
-rw-r--r-- | data_structures_correct/SWITCH_f.js | 21 | ||||
-rw-r--r-- | dependencies.js | 77 | ||||
-rw-r--r-- | finalmodsheet.xsl | 8 |
5 files changed, 151 insertions, 4 deletions
diff --git a/data_structures_correct/CONST_m.js b/data_structures_correct/CONST_m.js index 3031351..0d6a567 100644 --- a/data_structures_correct/CONST_m.js +++ b/data_structures_correct/CONST_m.js @@ -15,6 +15,25 @@ function CONST_m() { this.x.graphics.exprs = new ScilabString([sci2exp(this.c)]); return new BasicBlock(this.x); } + CONST_m.prototype.internal = function CONST_m() { + this.c = [1]; + var model = new scicos_model(); + model.sim = list(new ScilabString(["cstblk4"]), new ScilabDouble([4])); + model.in = new ScilabDouble(); + model.out = new ScilabDouble([this.c.length]); + model.in2 = new ScilabDouble(); + model.out2 = new ScilabDouble([this.c.length]); + model.rpar = new ScilabDouble(this.c); + model.opar = list(); + model.blocktype = new ScilabString(["d"]); + model.dep_ut = new ScilabBoolean([false, false]); + + var gr_i = new ScilabString(["xstringb(orig(1),orig(2),\"CONST_m\",sz(1),sz(2));"]); + var exprs = new ScilabString([sci2exp(this.c)]); + var block = new standard_define(new ScilabDouble([80, 80]), model, exprs, gr_i); // 1 -> 80 + block.graphics.style = new ScilabString(["CONST_m"]); + return block; + } CONST_m.prototype.define = function CONST_m() { this.c = [1]; var model = new scicos_model(); diff --git a/data_structures_correct/SELF_SWITCH.js b/data_structures_correct/SELF_SWITCH.js new file mode 100644 index 0000000..286d822 --- /dev/null +++ b/data_structures_correct/SELF_SWITCH.js @@ -0,0 +1,30 @@ +function SELF_SWITCH() { + + SELF_SWITCH.prototype.define = function SELF_SWITCH() { + this.stateOpen = true; + + this.x = scicos_block(); + this.x.gui = new ScilabString(["SELF_SWITCH"]); + this.x.graphics.sz = new ScilabDouble([2, 2]); + this.x.graphics.gr_i = new ScilabDouble(); + this.x.graphics.pin = new ScilabDouble([0]); + this.x.graphics.pout = new ScilabDouble([0]); + this.x.model.sim = new ScilabString(["csuper"]); + this.x.model.in = new ScilabDouble([1]); + this.x.model.out = new ScilabDouble([1]); + this.x.model.blocktype = new ScilabString(["h"]); + this.x.model.dep_ut = new ScilabBoolean([false, false]); + this.x.model.rpar = genSwitchInnerDiagram(this.stateOpen); + this.x.model.opar = list(new ScilabBoolean([this.stateOpen])); + this.x.graphics.in_implicit = new ScilabString(["E"]); + this.x.graphics.in_style = new ScilabString([""]); + this.x.graphics.out_implicit = new ScilabString(["E"]); + this.x.graphics.out_style = new ScilabString([""]); + this.x.graphics.style = new ScilabString(["SELF_SWITCH;SELF_SWITCH_OFF"]); + return new BasicBlock(this.x); + } + + SELF_SWITCH.prototype.details = function SELF_SWITCH() { + return this.x; + } +} diff --git a/data_structures_correct/SWITCH_f.js b/data_structures_correct/SWITCH_f.js index ec4e1d7..c9cefb1 100644 --- a/data_structures_correct/SWITCH_f.js +++ b/data_structures_correct/SWITCH_f.js @@ -20,6 +20,27 @@ function SWITCH_f() { this.x = new standard_define(new ScilabDouble([2, 2]), model, exprs, gr_i); return new BasicBlock(this.x); } + + SWITCH_f.prototype.internal = function SWITCH_f() { + this.i0 = 0; + this.in1 = [[-1],[-1]]; + this.nin = 2; + + var model = scicos_model(); + model.sim=list(new ScilabString(["switchn"]),new ScilabDouble([2])); + model.in=new ScilabDouble(...this.in1); + model.out = new ScilabDouble([-1]); + model.ipar=new ScilabDouble([this.i0]); + model.blocktype = new ScilabString(["c"]); + model.firing = new ScilabDouble(); + model.dep_ut = new ScilabBoolean([true,true]); + + var exprs = new ScilabString([this.nin],[this.i0+1]); + + var gr_i = new ScilabString(["xstringb(orig(1),orig(2),\"SWITCH_f\",sz(1),sz(2));"]); + var block=new standard_define(new ScilabDouble([2,2]),model,exprs,gr_i); + return block; + } SWITCH_f.prototype.details = function SWITCH_f() { return this.x; diff --git a/dependencies.js b/dependencies.js index 2c09e5e..36106e8 100644 --- a/dependencies.js +++ b/dependencies.js @@ -1418,3 +1418,80 @@ function ascii() { return convertAscii; } +function genSwitchInnerDiagram(stateOpen) { + diagram = scicos_diagram(); + // Input forward + diagram.objs.push(new IN_f().internal()); + diagram.objs[0].graphics.pout = new ScilabDouble([5]); + diagram.objs[0].graphics.flip = new ScilabBoolean([true]); + diagram.objs[0].model.uid = new ScilabString([count]); + diagram.objs[0].doc = list(new ScilabString([count++])); + + // Output's forward + diagram.objs.push(new OUT_f().internal()); + diagram.objs[1].graphics.pin = new ScilabDouble([7]); + diagram.objs[1].graphics.flip = new ScilabBoolean([true]); + diagram.objs[1].model.outtyp = new ScilabDouble(); + diagram.objs[1].model.uid = new ScilabString([count]); + diagram.objs[1].doc = list(new ScilabString([count++])); + + diagram.objs.push(new CONST_m().internal()); + diagram.objs[2].graphics.pout = new ScilabDouble([6]); + diagram.objs[2].graphics.flip = new ScilabBoolean([true]); + diagram.objs[2].graphics.exprs = new ScilabString(["0"]); + diagram.objs[2].graphics.out_implicit = new ScilabString(["E"]); + diagram.objs[2].graphics.out_style = new ScilabString(["ExplicitOutputPort;align=right;verticalAlign=middle;spacing=10.0;rotation=0"]); + diagram.objs[2].graphics.out_label = new ScilabString([""]); + diagram.objs[2].model.rpar = new ScilabDouble([0]); + diagram.objs[2].model.uid = new ScilabString([count]); + diagram.objs[2].doc = list(new ScilabString([count++])); + + diagram.objs.push(new SWITCH_f().internal()); + diagram.objs[3].graphics.pin = new ScilabDouble([5], [6]); + diagram.objs[3].graphics.flip = new ScilabBoolean([true]); + diagram.objs[3].graphics.pout = new ScilabDouble([7]); + diagram.objs[3].graphics.in_implicit = new ScilabString(["E"], ["E"]); + diagram.objs[3].graphics.in_style = new ScilabString(["ExplicitInputPort;align=left;verticalAlign=middle;spacing=10.0;rotation=0"], ["ExplicitInputPort;align=left;verticalAlign=middle;spacing=10.0;rotation=0"]); + diagram.objs[3].graphics.in_label = new ScilabString([""], [""]); + diagram.objs[3].graphics.out_implicit = new ScilabString(["E"]); + diagram.objs[3].graphics.out_style = new ScilabString(["ExplicitOutputPort;align=right;verticalAlign=middle;spacing=10.0;rotation=0"]); + diagram.objs[3].graphics.out_label = new ScilabString([""]); + diagram.objs[3].graphics.style = new ScilabString(["SWITCH_f"]); + diagram.objs[3].model.in2 = new ScilabDouble([1], [1]); + diagram.objs[3].model.intyp = new ScilabDouble([1], [1]); + diagram.objs[3].model.out2 = new ScilabDouble([1]); + diagram.objs[3].model.uid = new ScilabString([count]); + diagram.objs[3].doc = list(new ScilabString([count++])); + + if (stateOpen == true) { + diagram.objs[3].model.ipar = new ScilabDouble([1]); + diagram.objs[3].graphics.exprs = new ScilabString(["2"], ["2"]); + } else { + diagram.objs[3].model.ipar = new ScilabDouble([0]); + diagram.objs[3].graphics.exprs = new ScilabString(["2"], ["1"]); + } + + // IN_f <-> SWITCH_f + diagram.objs[4] = scicos_link({ + xx: new ScilabDouble([0], [0]), + yy: new ScilabDouble([0], [0]), + from: new ScilabDouble([1, 1, 0]), + to: new ScilabDouble([4, 1, 1]) + }); + // CONST_m <-> SWITCH_f + diagram.objs[5] = scicos_link({ + xx: new ScilabDouble([0], [0]), + yy: new ScilabDouble([0], [0]), + from: new ScilabDouble([3, 1, 0]), + to: new ScilabDouble([4, 2, 1]) + }); + // SWITCH_f <-> OUT_f + diagram.objs[6] = scicos_link({ + xx: new ScilabDouble([0], [0]), + yy: new ScilabDouble([0], [0]), + from: new ScilabDouble([4, 1, 0]), + to: new ScilabDouble([2, 1, 1]) + }); + + return diagram; +} diff --git a/finalmodsheet.xsl b/finalmodsheet.xsl index 8b9c804..35bcf08 100644 --- a/finalmodsheet.xsl +++ b/finalmodsheet.xsl @@ -172,7 +172,7 @@ Look for TAG:Break1!!! </xsl:template> <xsl:template name="Object" match="Object"> <xsl:element name="Array"> - <xsl:if test="name(..)='BasicBlock' or name(..)='AfficheBlock' or name(..)='BigSom' or name(..)='RoundBlock' or name(..)='GroundBlock' or name(..)='EventInBlock' or name(..)='EventOutBlock' or name(..)='ImplicitInBlock' or name(..)='Product' or name(..)='ImplicitOutBlock' or name(..)='SuperBlock' or name(..)='ExplicitInBlock' or name(..)='ExplicitOutBlock' or name(..)='Summation' or name(..)='TextBlock' or name(..)='VoltageSensorBlock'"> + <xsl:if test="name(..)='BasicBlock' or name(..)='AfficheBlock' or name(..)='BigSom' or name(..)='RoundBlock' or name(..)='GroundBlock' or name(..)='EventInBlock' or name(..)='EventOutBlock' or name(..)='ImplicitInBlock' or name(..)='Product' or name(..)='ImplicitOutBlock' or name(..)='SuperBlock' or name(..)='ExplicitInBlock' or name(..)='ExplicitOutBlock' or name(..)='Summation' or name(..)='TextBlock' or name(..)='VoltageSensorBlock' or name(..)='SuperBlock'"> <xsl:if test="@as"> <xsl:attribute name="as"> <xsl:value-of select="@as" /> @@ -200,7 +200,7 @@ Look for TAG:Break1!!! --> <xsl:template name="Array" match="Array"> <xsl:element name="Array"> - <xsl:if test="name(..)='BasicBlock' or @as='context' or name(..)='AfficheBlock' or name(..)='BigSom' or name(..)='RoundBlock' or name(..)='GroundBlock' or name(..)='EventInBlock' or name(..)='EventOutBlock' or name(..)='ImplicitInBlock' or name(..)='Product' or name(..)='ImplicitOutBlock' or name(..)='SuperBlock' or name(..)='ExplicitInBlock' or name(..)='ExplicitOutBlock' or name(..)='Summation' or name(..)='TextBlock' or nmae(..)='VoltageSensorBlock'"> + <xsl:if test="name(..)='BasicBlock' or @as='context' or name(..)='AfficheBlock' or name(..)='BigSom' or name(..)='RoundBlock' or name(..)='GroundBlock' or name(..)='EventInBlock' or name(..)='EventOutBlock' or name(..)='ImplicitInBlock' or name(..)='Product' or name(..)='ImplicitOutBlock' or name(..)='SuperBlock' or name(..)='ExplicitInBlock' or name(..)='ExplicitOutBlock' or name(..)='Summation' or name(..)='TextBlock' or nmae(..)='VoltageSensorBlock' or name(..)='SuperBlock'"> <xsl:if test="@as"> <xsl:attribute name="as"> <xsl:value-of select="@as" /> @@ -1581,7 +1581,7 @@ Look for TAG:Break1!!! </xsl:template> <xsl:template name="ScilabDouble" match="ScilabDouble"> <xsl:element name="ScilabDouble"> - <xsl:if test="name(..)='BasicBlock' or name(..)='AfficheBlock' or name(..)='BigSom' or name(..)='RoundBlock' or name(..)='GroundBlock' or name(..)='EventInBlock' or name(..)='EventOutBlock' or name(..)='ImplicitInBlock' or name(..)='Product' or name(..)='ImplicitOutBlock' or name(..)='SuperBlock' or name(..)='ExplicitInBlock' or name(..)='ExplicitOutBlock' or name(..)='Summation' or name(..)='TextBlock' or name(..)='VoltageSensorBlock'"> + <xsl:if test="name(..)='BasicBlock' or name(..)='AfficheBlock' or name(..)='BigSom' or name(..)='RoundBlock' or name(..)='GroundBlock' or name(..)='EventInBlock' or name(..)='EventOutBlock' or name(..)='ImplicitInBlock' or name(..)='Product' or name(..)='ImplicitOutBlock' or name(..)='SuperBlock' or name(..)='ExplicitInBlock' or name(..)='ExplicitOutBlock' or name(..)='Summation' or name(..)='TextBlock' or name(..)='VoltageSensorBlock' or name(..)='SuperBlock'"> <xsl:if test="@as"> <xsl:attribute name="as"> <xsl:value-of select="@as" /> @@ -1613,7 +1613,7 @@ Look for TAG:Break1!!! </xsl:template> <xsl:template name="ScilabString" match="ScilabString"> <xsl:element name="ScilabString"> - <xsl:if test="name(..)='BasicBlock' or name(..)='AfficheBlock' or name(..)='BigSom' or name(..)='RoundBlock' or name(..)='GroundBlock' or name(..)='EventInBlock' or name(..)='EventOutBlock' or name(..)='ImplicitInBlock' or name(..)='Product' or name(..)='ImplicitOutBlock' or name(..)='SuperBlock' or name(..)='ExplicitInBlock' or name(..)='ExplicitOutBlock' or name(..)='Summation' or name(..)='TextBlock' or name(..)='VoltageSensorBlock'"> + <xsl:if test="name(..)='BasicBlock' or name(..)='AfficheBlock' or name(..)='BigSom' or name(..)='RoundBlock' or name(..)='GroundBlock' or name(..)='EventInBlock' or name(..)='EventOutBlock' or name(..)='ImplicitInBlock' or name(..)='Product' or name(..)='ImplicitOutBlock' or name(..)='SuperBlock' or name(..)='ExplicitInBlock' or name(..)='ExplicitOutBlock' or name(..)='Summation' or name(..)='TextBlock' or name(..)='VoltageSensorBlock' or name(..)='SuperBlock'"> <xsl:if test="@as"> <xsl:attribute name="as"> <xsl:value-of select="@as" /> |