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