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