int __ses_status_check(ScfEfunction* f, ScfEcomponent* c, ScfEpin* pb, ScfEpin* pe)
{
ScfEcomponent* B = f->components[0];
+ ScfEpin* Bp = B->pins[SCF_EDA_Battery_POS];
ScfEpin* Bn = B->pins[SCF_EDA_Battery_NEG];
double DV = SCF_EDA_V_NPN_OFF;
pb->v = f->elines[pb->lid]->v;
pe->v = f->elines[pe->lid]->v;
- if (pe->v < SCF_EDA_V_MIN) {
+ if (pb->v < SCF_EDA_V_MIN) {
+
+ if (pe->v < SCF_EDA_V_MIN)
+ return 0;
+
+ pb->v = pe->v + DV;
+
+ if (pb->v > Bp->v) {
+ pb->v = Bp->v;
+ c->status = SCF_EDA_Status_OFF;
+ } else
+ c->status = SCF_EDA_Status_ON;
+
+ scf_loge("\033[34mc%ld, status: %d\033[0m\n", c->id, c->status);
+ return 1;
+
+ } else if (pe->v < SCF_EDA_V_MIN) {
pe->v = pb->v - DV;
if (pe->v < Bn->v) {