00001
00010 #include <stdlib.h>
00011 #include <stdio.h>
00012 #include <errno.h>
00013 #include <math.h>
00014 #include "network.h"
00015
00017
00019 CLASS *capbank::oclass = NULL;
00020 CLASS *capbank::pclass = NULL;
00021 capbank *capbank::defaults = NULL;
00022 CLASS *capbank_class = NULL;
00023
00024 capbank::capbank(MODULE *mod) : link(mod)
00025 {
00026
00027
00028 if (oclass==NULL)
00029 {
00030
00031 capbank_class = oclass = gl_register_class(mod,"capbank",sizeof(capbank),PC_BOTTOMUP);
00032 if (oclass==NULL)
00033 throw "unable to register class capbank";
00034 else
00035 oclass->trl = TRL_CONCEPT;
00036
00037
00038 if (gl_publish_variable(oclass,
00039 PT_double, "KVARrated", PADDR(KVARrated),
00040 PT_double, "Vrated", PADDR(Vrated),
00041 PT_enumeration,"state",PADDR(state),
00042 PT_KEYWORD,"CAPS_IN",CAPS_IN,
00043 PT_KEYWORD,"CAPS_OUT",CAPS_OUT,
00044 PT_object, "CTlink", PADDR(CTlink),
00045 PT_object, "PTnode", PADDR(PTnode),
00046 PT_double, "VARopen", PADDR(VARopen),
00047 PT_double, "VARclose", PADDR(VARclose),
00048 PT_double, "Vopen", PADDR(Vopen),
00049 PT_double, "Vclose", PADDR(Vclose),
00050 NULL)<1) GL_THROW("unable to publish properties in %s",__FILE__);
00051
00052
00053 defaults = this;
00054 }
00055 }
00056
00057 int capbank::create()
00058 {
00059 int result = link::create();
00060 memcpy(this,defaults,sizeof(*this));
00061 return result;
00062 }
00063
00064 TIMESTAMP capbank::sync(TIMESTAMP t0)
00065 {
00066 node *f = OBJECTDATA(from,node);
00067 node *t = OBJECTDATA(to,node);
00068 if (f==NULL || t==NULL)
00069 return TS_NEVER;
00070
00071 return link::sync(t0);
00072 }
00073
00075
00077
00078 EXPORT int create_capbank(OBJECT **obj, OBJECT *parent)
00079 {
00080 *obj = gl_create_object(capbank_class);
00081 if (*obj!=NULL)
00082 {
00083 capbank *my = OBJECTDATA(*obj,capbank);
00084 gl_set_parent(*obj,parent);
00085 my->create();
00086 return 1;
00087 }
00088 return 0;
00089 }
00090
00091 EXPORT TIMESTAMP sync_capbank(OBJECT *obj, TIMESTAMP t0)
00092 {
00093 TIMESTAMP t1 = OBJECTDATA(obj,capbank)->sync(t0);
00094 obj->clock = t0;
00095 return t1;
00096 }
00097
00098