void STARTUP_pore() { GenesisObject* object; GenesisObject tobject; char* slotnames[50]; char* argv[50]; /* Definition of object Napores */ BZERO(&tobject,sizeof(GenesisObject)); tobject.name = "Napores"; tobject.type = "Na_pore_type"; tobject.size = sizeof(struct Na_pore_type); { extern int NaPorePop(); tobject.function = NaPorePop; HashFunc("NaPorePop", NaPorePop, "int"); } ObjectAddClass(&tobject,ClassID("segment"),CLASS_PERMANENT); AddDefaultFieldList(&tobject); tobject.defaults = (Element*) calloc(1, tobject.size); AddObject(&tobject); object = GetObject("Napores"); object->defaults->object = object; object->defaults->name = CopyString("Napores"); { extern int NaPorePop(); AddActionToObject(object, "INIT", NaPorePop, 0) ? 0 : (Error(), printf("adding action 'INIT' to object 'Napores'\n")); HashFunc("NaPorePop", NaPorePop, "int"); } { extern int NaPorePop(); AddActionToObject(object, "PROCESS", NaPorePop, 0) ? 0 : (Error(), printf("adding action 'PROCESS' to object 'Napores'\n")); HashFunc("NaPorePop", NaPorePop, "int"); } { extern int NaPorePop(); AddActionToObject(object, "RESET", NaPorePop, 0) ? 0 : (Error(), printf("adding action 'RESET' to object 'Napores'\n")); HashFunc("NaPorePop", NaPorePop, "int"); } { extern int NaPorePop(); AddActionToObject(object, "CHECK", NaPorePop, 0) ? 0 : (Error(), printf("adding action 'CHECK' to object 'Napores'\n")); HashFunc("NaPorePop", NaPorePop, "int"); } slotnames[0] = "Vm"; MsgListAdd(object, "VOLTAGE", Napores_VOLTAGE, slotnames, 1); object->author = "Adam Strassberg"; object->description = "Sodium pore population represented through eight state Markov kinetic scheme (see Strassberg and DeFelice, 1992).\n"; FieldListMakePermanent(object); MsgListMakePermanent(object); /* Definition of object Kpores */ BZERO(&tobject,sizeof(GenesisObject)); tobject.name = "Kpores"; tobject.type = "K_pore_type"; tobject.size = sizeof(struct K_pore_type); { extern int KPorePop(); tobject.function = KPorePop; HashFunc("KPorePop", KPorePop, "int"); } ObjectAddClass(&tobject,ClassID("segment"),CLASS_PERMANENT); AddDefaultFieldList(&tobject); tobject.defaults = (Element*) calloc(1, tobject.size); AddObject(&tobject); object = GetObject("Kpores"); object->defaults->object = object; object->defaults->name = CopyString("Kpores"); { extern int KPorePop(); AddActionToObject(object, "INIT", KPorePop, 0) ? 0 : (Error(), printf("adding action 'INIT' to object 'Kpores'\n")); HashFunc("KPorePop", KPorePop, "int"); } { extern int KPorePop(); AddActionToObject(object, "PROCESS", KPorePop, 0) ? 0 : (Error(), printf("adding action 'PROCESS' to object 'Kpores'\n")); HashFunc("KPorePop", KPorePop, "int"); } { extern int KPorePop(); AddActionToObject(object, "RESET", KPorePop, 0) ? 0 : (Error(), printf("adding action 'RESET' to object 'Kpores'\n")); HashFunc("KPorePop", KPorePop, "int"); } { extern int KPorePop(); AddActionToObject(object, "CHECK", KPorePop, 0) ? 0 : (Error(), printf("adding action 'CHECK' to object 'Kpores'\n")); HashFunc("KPorePop", KPorePop, "int"); } slotnames[0] = "Vm"; MsgListAdd(object, "VOLTAGE", Kpores_VOLTAGE, slotnames, 1); object->author = "Adam Strassberg"; object->description = "Potassium pore population represented through five state Markov kinetic scheme (see Strassberg and DeFelice, 1992).\n"; FieldListMakePermanent(object); MsgListMakePermanent(object); /* Script variables */ } /* STARTUP_pore */
void STARTUP_user() { GenesisObject* object; GenesisObject tobject; char* slotnames[50]; char* argv[50]; /* Definition of object pulsegen */ BZERO(&tobject,sizeof(GenesisObject)); tobject.name = "pulsegen"; tobject.type = "pulsegen_type"; tobject.size = sizeof(struct pulsegen_type); { extern int PulseGen(); tobject.function = PulseGen; HashFunc("PulseGen", PulseGen, "int"); } ObjectAddClass(&tobject,ClassID("device"),CLASS_PERMANENT); AddDefaultFieldList(&tobject); tobject.defaults = (Element*) calloc(1, tobject.size); AddObject(&tobject); object = GetObject("pulsegen"); object->defaults->object = object; object->defaults->name = CopyString("pulsegen"); object->author = "M.Nelson Caltech 4/89"; { extern int PulseGen(); AddActionToObject(object, "RESET", PulseGen, 0) ? 0 : (Error(), printf("adding action 'RESET' to object 'pulsegen'\n")); HashFunc("PulseGen", PulseGen, "int"); } { extern int PulseGen(); AddActionToObject(object, "PROCESS", PulseGen, 0) ? 0 : (Error(), printf("adding action 'PROCESS' to object 'pulsegen'\n")); HashFunc("PulseGen", PulseGen, "int"); } slotnames[0] = "gate/trig"; MsgListAdd(object, "INPUT", pulsegen_INPUT, slotnames, 1); slotnames[0] = "pulse#"; slotnames[1] = "level"; MsgListAdd(object, "LEVEL", pulsegen_LEVEL, slotnames, 2); slotnames[0] = "pulse#"; slotnames[1] = "width"; MsgListAdd(object, "WIDTH", pulsegen_WIDTH, slotnames, 2); slotnames[0] = "pulse#"; slotnames[1] = "delay"; MsgListAdd(object, "DELAY", pulsegen_DELAY, slotnames, 2); object->description = "General purpose pulse generator\n"; FieldListMakePermanent(object); MsgListMakePermanent(object); /* Definition of object PID */ BZERO(&tobject,sizeof(GenesisObject)); tobject.name = "PID"; tobject.type = "PID_type"; tobject.size = sizeof(struct PID_type); { extern int PIDcontroller(); tobject.function = PIDcontroller; HashFunc("PIDcontroller", PIDcontroller, "int"); } ObjectAddClass(&tobject,ClassID("device"),CLASS_PERMANENT); AddDefaultFieldList(&tobject); tobject.defaults = (Element*) calloc(1, tobject.size); AddObject(&tobject); object = GetObject("PID"); object->defaults->object = object; object->defaults->name = CopyString("PID"); object->author = "M.Nelson Caltech 4/89"; { extern int PIDcontroller(); AddActionToObject(object, "INIT", PIDcontroller, 0) ? 0 : (Error(), printf("adding action 'INIT' to object 'PID'\n")); HashFunc("PIDcontroller", PIDcontroller, "int"); } { extern int PIDcontroller(); AddActionToObject(object, "RESET", PIDcontroller, 0) ? 0 : (Error(), printf("adding action 'RESET' to object 'PID'\n")); HashFunc("PIDcontroller", PIDcontroller, "int"); } { extern int PIDcontroller(); AddActionToObject(object, "PROCESS", PIDcontroller, 0) ? 0 : (Error(), printf("adding action 'PROCESS' to object 'PID'\n")); HashFunc("PIDcontroller", PIDcontroller, "int"); } slotnames[0] = "command"; MsgListAdd(object, "CMD", PID_CMD, slotnames, 1); slotnames[0] = "sense"; MsgListAdd(object, "SNS", PID_SNS, slotnames, 1); slotnames[0] = "gain"; MsgListAdd(object, "GAIN", PID_GAIN, slotnames, 1); object->description = "PID (proportional, integral, derivative) feedback controller\n"; FieldListMakePermanent(object); MsgListMakePermanent(object); /* Script variables */ } /* STARTUP_user */