|
@@ -17,7 +17,7 @@ typedef struct {
|
|
|
uint8_t cur_addr;
|
|
uint8_t cur_addr;
|
|
|
|
|
|
|
|
uint8_t chs; //所有控制板的总通道数
|
|
uint8_t chs; //所有控制板的总通道数
|
|
|
- power_ch_t **pch; //动态指针
|
|
|
|
|
|
|
+ power_ch_t *pch[32]; //动态指针
|
|
|
power_ch_t ch0;
|
|
power_ch_t ch0;
|
|
|
|
|
|
|
|
uint8_t cnt; //实际扫到的板子个数,不可大于POWER_
|
|
uint8_t cnt; //实际扫到的板子个数,不可大于POWER_
|
|
@@ -47,7 +47,7 @@ static int get_alarm(power_ch_t *pch)
|
|
|
}
|
|
}
|
|
|
static int set_ch(power_ch_t *pch)
|
|
static int set_ch(power_ch_t *pch)
|
|
|
{
|
|
{
|
|
|
- return power_set_ch_sw(pch->info.ch, pch->power[0].status);
|
|
|
|
|
|
|
+ return power_set_ch_sw(pch->info.ch, pch->status);
|
|
|
}
|
|
}
|
|
|
static int set_open_delay(power_ch_t *pch)
|
|
static int set_open_delay(power_ch_t *pch)
|
|
|
{
|
|
{
|
|
@@ -129,7 +129,7 @@ static int alarm_evt_handle(power_handle_t *h, power_ch_t *pch)
|
|
|
|
|
|
|
|
ad.ch = pch->info.ch;
|
|
ad.ch = pch->info.ch;
|
|
|
ad.alarm = pch->alarm;
|
|
ad.alarm = pch->alarm;
|
|
|
- ad.time = pch->time;
|
|
|
|
|
|
|
+ // ad.time = pch->time;
|
|
|
web_post(PKT_TYPE_ALARM, &ad, sizeof(ad));
|
|
web_post(PKT_TYPE_ALARM, &ad, sizeof(ad));
|
|
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
@@ -316,14 +316,14 @@ static int threshold_proc(power_handle_t *h, board_data_t *pbrd)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
for(j=0; j<times; j++) {
|
|
for(j=0; j<times; j++) {
|
|
|
- if(pch->thr.v_upper.en) {
|
|
|
|
|
- if(pch->power[j].voltage>pch->thr.v_upper.val) {
|
|
|
|
|
|
|
+ if(pch->thr.en.v_upper_en) {
|
|
|
|
|
+ if(pch->power[j].voltage>pch->thr.v_upper) {
|
|
|
if(pch->alarm.v_upper && get_flag(h, pch->info.ch, ALARM_V_UPPER)==0) {
|
|
if(pch->alarm.v_upper && get_flag(h, pch->info.ch, ALARM_V_UPPER)==0) {
|
|
|
set_flag(h, pch->info.ch, ALARM_V_UPPER, 1);
|
|
set_flag(h, pch->info.ch, ALARM_V_UPPER, 1);
|
|
|
alarm_evt_handle(h, pch);
|
|
alarm_evt_handle(h, pch);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- else if(pch->power[j].voltage<pch->thr.v_lower.val) {
|
|
|
|
|
|
|
+ else if(pch->power[j].voltage<pch->thr.v_lower) {
|
|
|
if(pch->alarm.v_lower && get_flag(h, pch->info.ch, ALARM_V_LOWER)==0) {
|
|
if(pch->alarm.v_lower && get_flag(h, pch->info.ch, ALARM_V_LOWER)==0) {
|
|
|
set_flag(h, pch->info.ch, ALARM_V_LOWER, 1);
|
|
set_flag(h, pch->info.ch, ALARM_V_LOWER, 1);
|
|
|
alarm_evt_handle(h, pch);
|
|
alarm_evt_handle(h, pch);
|
|
@@ -335,8 +335,8 @@ static int threshold_proc(power_handle_t *h, board_data_t *pbrd)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if(pch->thr.c_upper.en) {
|
|
|
|
|
- if(pch->power[j].current>pch->thr.c_upper.val) {
|
|
|
|
|
|
|
+ if(pch->thr.en.c_upper_en) {
|
|
|
|
|
+ if(pch->power[j].current>pch->thr.c_upper) {
|
|
|
if(pch->alarm.c_upper && get_flag(h, pch->info.ch, ALARM_C_UPPER)==0) {
|
|
if(pch->alarm.c_upper && get_flag(h, pch->info.ch, ALARM_C_UPPER)==0) {
|
|
|
set_flag(h, pch->info.ch, ALARM_C_UPPER, 1);
|
|
set_flag(h, pch->info.ch, ALARM_C_UPPER, 1);
|
|
|
alarm_evt_handle(h, pch);
|
|
alarm_evt_handle(h, pch);
|
|
@@ -347,8 +347,8 @@ static int threshold_proc(power_handle_t *h, board_data_t *pbrd)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if(pch->thr.p_upper.en) {
|
|
|
|
|
- if(pch->power[j].power>pch->thr.p_upper.val) {
|
|
|
|
|
|
|
+ if(pch->thr.en.p_upper_en) {
|
|
|
|
|
+ if(pch->power[j].power>pch->thr.p_upper) {
|
|
|
if(pch->alarm.p_upper && get_flag(h, pch->info.ch, ALARM_P_UPPER)==0) {
|
|
if(pch->alarm.p_upper && get_flag(h, pch->info.ch, ALARM_P_UPPER)==0) {
|
|
|
set_flag(h, pch->info.ch, ALARM_P_UPPER, 0);
|
|
set_flag(h, pch->info.ch, ALARM_P_UPPER, 0);
|
|
|
alarm_evt_handle(h, pch);
|
|
alarm_evt_handle(h, pch);
|
|
@@ -359,8 +359,8 @@ static int threshold_proc(power_handle_t *h, board_data_t *pbrd)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if(pch->thr.w_upper.en) {
|
|
|
|
|
- if(pch->power[j].current>pch->thr.w_upper.val) {
|
|
|
|
|
|
|
+ if(pch->thr.en.w_upper_en) {
|
|
|
|
|
+ if(pch->power[j].current>pch->thr.w_upper) {
|
|
|
if(pch->alarm.w_upper==1 && get_flag(h, pch->info.ch, ALARM_W_UPPER)==0) {
|
|
if(pch->alarm.w_upper==1 && get_flag(h, pch->info.ch, ALARM_W_UPPER)==0) {
|
|
|
set_flag(h, pch->info.ch, ALARM_W_UPPER, 1);
|
|
set_flag(h, pch->info.ch, ALARM_W_UPPER, 1);
|
|
|
alarm_evt_handle(h, pch);
|
|
alarm_evt_handle(h, pch);
|
|
@@ -389,13 +389,15 @@ static int total_proc(power_handle_t *h)
|
|
|
for (j=0; i<h->pbrd[i]->chs; i++) {
|
|
for (j=0; i<h->pbrd[i]->chs; i++) {
|
|
|
pch = &h->pbrd[i]->pch[j];
|
|
pch = &h->pbrd[i]->pch[j];
|
|
|
for(k=0; k<times; k++) {
|
|
for(k=0; k<times; k++) {
|
|
|
- tmp[k].voltage = pch->power[j].voltage;
|
|
|
|
|
- tmp[k].current += pch->power[j].current;
|
|
|
|
|
- tmp[k].power += pch->power[j].power;
|
|
|
|
|
- tmp[k].freq = pch->power[j].freq;
|
|
|
|
|
- tmp[k].consump += pch->power[j].consump;
|
|
|
|
|
|
|
+ tmp[k].voltage = pch->power[j].voltage/10.0;
|
|
|
|
|
+ tmp[k].current += (pch->power[j].current/10.0);
|
|
|
|
|
+ tmp[k].power += (pch->power[j].power/1000.0);
|
|
|
|
|
+ tmp[k].freq = (pch->power[j].freq/10.0);
|
|
|
|
|
+ tmp[k].consump += (pch->power[j].consump/1000.0);
|
|
|
|
|
+#if 0
|
|
|
tmp[k].active = pch->power[j].active;
|
|
tmp[k].active = pch->power[j].active;
|
|
|
tmp[k].reactive = pch->power[j].reactive;
|
|
tmp[k].reactive = pch->power[j].reactive;
|
|
|
|
|
+#endif
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -425,7 +427,7 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
|
|
|
|
|
lock_on(h->lck);
|
|
lock_on(h->lck);
|
|
|
if(pbrd) {
|
|
if(pbrd) {
|
|
|
- time_t tm = mktime(localtime(NULL));
|
|
|
|
|
|
|
+ // time_t tm = mktime(localtime(NULL));
|
|
|
switch(pbrd->type) {
|
|
switch(pbrd->type) {
|
|
|
case AC_SINGLE_S_TYPE:
|
|
case AC_SINGLE_S_TYPE:
|
|
|
case AC_SINGLE_B_TYPE:
|
|
case AC_SINGLE_B_TYPE:
|
|
@@ -445,24 +447,24 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
pwr = &pbrd->pch[i].power[0];
|
|
pwr = &pbrd->pch[i].power[0];
|
|
|
|
|
|
|
|
val = (tmp[1 + idx] << 16) | tmp[0 + idx];
|
|
val = (tmp[1 + idx] << 16) | tmp[0 + idx];
|
|
|
- pwr->voltage = val / 1000.0;
|
|
|
|
|
|
|
+ pwr->voltage = val / 100;
|
|
|
|
|
|
|
|
val = (tmp[3 + idx] << 16) | tmp[2 + idx];
|
|
val = (tmp[3 + idx] << 16) | tmp[2 + idx];
|
|
|
- pwr->current = val / 1000.0;
|
|
|
|
|
|
|
+ pwr->current = val / 100;
|
|
|
|
|
|
|
|
val = (tmp[5 + idx] << 16) | tmp[4 + idx];
|
|
val = (tmp[5 + idx] << 16) | tmp[4 + idx];
|
|
|
- pwr->power = val / 1000.0;
|
|
|
|
|
|
|
+ pwr->power = val;
|
|
|
|
|
|
|
|
val = (tmp[7 + idx] << 16) | tmp[6 + idx];
|
|
val = (tmp[7 + idx] << 16) | tmp[6 + idx];
|
|
|
- pwr->freq = val / 1000.0;
|
|
|
|
|
|
|
+ pwr->freq = val / 10;
|
|
|
|
|
|
|
|
val = (tmp[9 + idx] << 16) | tmp[8 + idx];
|
|
val = (tmp[9 + idx] << 16) | tmp[8 + idx];
|
|
|
- pwr->consump = val / 1000.0;
|
|
|
|
|
|
|
+ pwr->consump = val ;
|
|
|
|
|
|
|
|
val = (tmp[11 + idx] << 16) | tmp[10 + idx];
|
|
val = (tmp[11 + idx] << 16) | tmp[10 + idx];
|
|
|
- pwr->factor = val / 1000.0;
|
|
|
|
|
|
|
+ pwr->factor = val / 10;
|
|
|
|
|
|
|
|
- pbrd->pch[i].time = tm;
|
|
|
|
|
|
|
+ // pbrd->pch[i].time = tm;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
offset = POWER_AC_STAT_INFO_L;
|
|
offset = POWER_AC_STAT_INFO_L;
|
|
@@ -475,13 +477,14 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
|
|
|
|
|
for (i=0; i<pbrd->chs; i++) {
|
|
for (i=0; i<pbrd->chs; i++) {
|
|
|
pch = &pbrd->pch[i];
|
|
pch = &pbrd->pch[i];
|
|
|
- pch->power[0].status = tmp[i] & (0x01);
|
|
|
|
|
|
|
+ //pch->power[0].status = tmp[i] & (0x01);
|
|
|
|
|
+ pch->status = tmp[i] & (0x01);
|
|
|
pch->alarm.v_upper = (tmp[i] & BIT(2))?1:0;
|
|
pch->alarm.v_upper = (tmp[i] & BIT(2))?1:0;
|
|
|
pch->alarm.v_lower = (tmp[i] & BIT(4))?1:0;
|
|
pch->alarm.v_lower = (tmp[i] & BIT(4))?1:0;
|
|
|
pch->alarm.c_upper = (tmp[i] & BIT(6))?1:0;
|
|
pch->alarm.c_upper = (tmp[i] & BIT(6))?1:0;
|
|
|
pch->alarm.p_upper = (tmp[i] & BIT(8))?1:0;
|
|
pch->alarm.p_upper = (tmp[i] & BIT(8))?1:0;
|
|
|
pch->alarm.w_upper = (tmp[i] & BIT(10))?1:0;
|
|
pch->alarm.w_upper = (tmp[i] & BIT(10))?1:0;
|
|
|
- pch->alarm.ph_loss = 0;
|
|
|
|
|
|
|
+ //pch->alarm.ph_loss = 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
offset = POWER_AC_BREAKER_INFO;
|
|
offset = POWER_AC_BREAKER_INFO;
|
|
@@ -491,9 +494,9 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
pbrd->brk[0].samp.sw = (tmp[0]&BIT(0))?1:0;
|
|
pbrd->brk[0].samp.sw = (tmp[0]&BIT(0))?1:0;
|
|
|
- pbrd->brk[0].samp.time = tm;
|
|
|
|
|
|
|
+ // pbrd->brk[0].samp.time = tm;
|
|
|
pbrd->brk[1].samp.sw = (tmp[0]&BIT(1))?1:0;
|
|
pbrd->brk[1].samp.sw = (tmp[0]&BIT(1))?1:0;
|
|
|
- pbrd->brk[1].samp.time = tm;
|
|
|
|
|
|
|
+ // pbrd->brk[1].samp.time = tm;
|
|
|
|
|
|
|
|
uint16_t buffer[16] = {0};
|
|
uint16_t buffer[16] = {0};
|
|
|
|
|
|
|
@@ -503,11 +506,11 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
r = read_reg(h, pch->info.addr, offset, buffer, 16);
|
|
r = read_reg(h, pch->info.addr, offset, buffer, 16);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
|
|
|
|
|
- pch->thr.v_upper.val = ((buffer[1]<<16)|buffer[0])/1000;
|
|
|
|
|
- pch->thr.v_lower.val = ((buffer[3]<<16)|buffer[2])/1000;
|
|
|
|
|
- pch->thr.c_upper.val = ((buffer[5]<<16)|buffer[4])/1000;
|
|
|
|
|
- pch->thr.p_upper.val = ((buffer[9]<<16)|buffer[8])/1000;
|
|
|
|
|
- pch->thr.w_upper.val = ((buffer[13]<<16)|buffer[12])/1000;
|
|
|
|
|
|
|
+ pch->thr.v_upper = ((buffer[1]<<16)|buffer[0])/100;
|
|
|
|
|
+ pch->thr.v_lower = ((buffer[3]<<16)|buffer[2])/100;
|
|
|
|
|
+ pch->thr.c_upper = ((buffer[5]<<16)|buffer[4])/100;
|
|
|
|
|
+ pch->thr.p_upper = ((buffer[9]<<16)|buffer[8]);
|
|
|
|
|
+ pch->thr.w_upper = ((buffer[13]<<16)|buffer[12]);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
@@ -536,20 +539,20 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
pwr = &pbrd->pch[i].power[0];
|
|
pwr = &pbrd->pch[i].power[0];
|
|
|
|
|
|
|
|
float value = (tmp[1 + Index] << 16) + tmp[0 + Index];
|
|
float value = (tmp[1 + Index] << 16) + tmp[0 + Index];
|
|
|
- pwr->voltage = value / 1000.0;
|
|
|
|
|
|
|
+ pwr->voltage = value / 100;
|
|
|
|
|
|
|
|
value = (tmp[3 + Index] << 16) + tmp[2 + Index];
|
|
value = (tmp[3 + Index] << 16) + tmp[2 + Index];
|
|
|
- pwr->current = value / 1000.0;
|
|
|
|
|
|
|
+ pwr->current = value / 100;
|
|
|
|
|
|
|
|
value = (tmp[5 + Index] << 16) + tmp[4 + Index];
|
|
value = (tmp[5 + Index] << 16) + tmp[4 + Index];
|
|
|
- pwr->power = value / 1000.0;
|
|
|
|
|
|
|
+ pwr->power = value;
|
|
|
|
|
|
|
|
value = (tmp[7 + Index] << 16) + tmp[6 + Index];
|
|
value = (tmp[7 + Index] << 16) + tmp[6 + Index];
|
|
|
- pwr->consump = value / 1000.0;
|
|
|
|
|
|
|
+ pwr->consump = value;
|
|
|
|
|
|
|
|
pwr->freq = 0;
|
|
pwr->freq = 0;
|
|
|
pwr->factor = 1;
|
|
pwr->factor = 1;
|
|
|
- pbrd->pch[i].time = tm;
|
|
|
|
|
|
|
+ //pbrd->pch[i].time = tm;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
offset = POWER_DC_STAT_INFO;
|
|
offset = POWER_DC_STAT_INFO;
|
|
@@ -561,7 +564,7 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
|
|
|
|
|
for (i = 0; i < pbrd->chs; i++) {
|
|
for (i = 0; i < pbrd->chs; i++) {
|
|
|
flag = (tmp[1] << 16) + tmp[0];
|
|
flag = (tmp[1] << 16) + tmp[0];
|
|
|
- pbrd->pch[i].power[0].status = (flag >> i) & 0x1;
|
|
|
|
|
|
|
+ pbrd->pch[i].status = (flag >> i) & 0x1;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 获取报警状态
|
|
// 获取报警状态
|
|
@@ -587,7 +590,7 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
for (i = 0; i < pbrd->chs; i++) {
|
|
for (i = 0; i < pbrd->chs; i++) {
|
|
|
int Index = i * 2;
|
|
int Index = i * 2;
|
|
|
pch = &pbrd->pch[i];
|
|
pch = &pbrd->pch[i];
|
|
|
- pch->thr.v_upper.val = ((tmp[1+Index] << 16)+tmp[0+Index])/1000.0f;
|
|
|
|
|
|
|
+ pch->thr.v_upper = ((tmp[1+Index] << 16)+tmp[0+Index])/100;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
offset = POWER_DC_THRESHOLD_VOL_MIN;
|
|
offset = POWER_DC_THRESHOLD_VOL_MIN;
|
|
@@ -595,7 +598,7 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
for (i = 0; i < pbrd->chs; i++) {
|
|
for (i = 0; i < pbrd->chs; i++) {
|
|
|
int Index = i * 2;
|
|
int Index = i * 2;
|
|
|
pch = &pbrd->pch[i];
|
|
pch = &pbrd->pch[i];
|
|
|
- pch->thr.v_lower.val = ((tmp[1+Index] << 16)+tmp[0+Index])/1000.0f;
|
|
|
|
|
|
|
+ pch->thr.v_lower = ((tmp[1+Index] << 16)+tmp[0+Index])/100;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
offset = POWER_DC_THRESHOLD_CUR_MAX;
|
|
offset = POWER_DC_THRESHOLD_CUR_MAX;
|
|
@@ -603,7 +606,7 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
for (i = 0; i < pbrd->chs; i++) {
|
|
for (i = 0; i < pbrd->chs; i++) {
|
|
|
int Index = i * 2;
|
|
int Index = i * 2;
|
|
|
pch = &pbrd->pch[i];
|
|
pch = &pbrd->pch[i];
|
|
|
- pch->thr.c_upper.val = ((tmp[1+Index] << 16)+tmp[0+Index])/1000.0f;
|
|
|
|
|
|
|
+ pch->thr.c_upper = ((tmp[1+Index] << 16)+tmp[0+Index])/100;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
offset = POWER_DC_THRESHOLD_POWER_MAX;
|
|
offset = POWER_DC_THRESHOLD_POWER_MAX;
|
|
@@ -611,7 +614,7 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
for (i = 0; i < pbrd->chs; i++) {
|
|
for (i = 0; i < pbrd->chs; i++) {
|
|
|
int Index = i * 2;
|
|
int Index = i * 2;
|
|
|
pch = &pbrd->pch[i];
|
|
pch = &pbrd->pch[i];
|
|
|
- pch->thr.p_upper.val = ((tmp[1+Index] << 16)+tmp[0+Index])/1000.0f;
|
|
|
|
|
|
|
+ pch->thr.p_upper = ((tmp[1+Index] << 16)+tmp[0+Index]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
offset = POWER_DC_THRESHOLD_POWERCON_MAX;
|
|
offset = POWER_DC_THRESHOLD_POWERCON_MAX;
|
|
@@ -619,7 +622,7 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
for (i = 0; i < pbrd->chs; i++) {
|
|
for (i = 0; i < pbrd->chs; i++) {
|
|
|
int Index = i * 2;
|
|
int Index = i * 2;
|
|
|
pch = &pbrd->pch[i];
|
|
pch = &pbrd->pch[i];
|
|
|
- pch->thr.w_upper.val = ((tmp[1+Index] << 16)+tmp[0+Index])/1000.0f;
|
|
|
|
|
|
|
+ pch->thr.w_upper = ((tmp[1+Index] << 16)+tmp[0+Index]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
@@ -651,40 +654,40 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
{
|
|
{
|
|
|
pwr = &pbrd->pch[i].power[j];
|
|
pwr = &pbrd->pch[i].power[j];
|
|
|
index_2 = (j*16) + (48*i);
|
|
index_2 = (j*16) + (48*i);
|
|
|
- pwr->voltage = ((tmp[1+index_2] << 16) + tmp[0+index_2])/1000.0f;
|
|
|
|
|
- pwr->current = ((tmp[3+index_2] << 16) + tmp[2+index_2])/1000.0f;
|
|
|
|
|
- pwr->power = ((tmp[5+index_2] << 16) + tmp[4+index_2])/1000.0f;
|
|
|
|
|
- pwr->freq = ((tmp[11+index_2] << 16) + tmp[10+index_2])/1000.0f;
|
|
|
|
|
- pwr->consump = ((tmp[13+index_2] << 16) + tmp[12+index_2])/1000.0f;
|
|
|
|
|
- pwr->factor = ((tmp[15+index_2] << 16) + tmp[14+index_2])/1000.0f;
|
|
|
|
|
|
|
+ pwr->voltage = ((tmp[1+index_2] << 16) + tmp[0+index_2])/100;
|
|
|
|
|
+ pwr->current = ((tmp[3+index_2] << 16) + tmp[2+index_2])/100;
|
|
|
|
|
+ pwr->power = ((tmp[5+index_2] << 16) + tmp[4+index_2]);
|
|
|
|
|
+ pwr->freq = ((tmp[11+index_2] << 16) + tmp[10+index_2])/100;
|
|
|
|
|
+ pwr->consump = ((tmp[13+index_2] << 16) + tmp[12+index_2]);
|
|
|
|
|
+ pwr->factor = ((tmp[15+index_2] << 16) + tmp[14+index_2])/10;
|
|
|
}
|
|
}
|
|
|
}else{
|
|
}else{
|
|
|
int Index = i * 16;
|
|
int Index = i * 16;
|
|
|
pwr = &pbrd->pch[i].power[0];
|
|
pwr = &pbrd->pch[i].power[0];
|
|
|
float value = (tmp[1+Index] << 16) + tmp[0+Index];
|
|
float value = (tmp[1+Index] << 16) + tmp[0+Index];
|
|
|
|
|
|
|
|
- pwr->voltage = value / 1000.0f;
|
|
|
|
|
|
|
+ pwr->voltage = value / 100;
|
|
|
|
|
|
|
|
value = (tmp[3+Index] << 16) + tmp[2+Index];
|
|
value = (tmp[3+Index] << 16) + tmp[2+Index];
|
|
|
- pwr->current = value / 1000.0f;
|
|
|
|
|
|
|
+ pwr->current = value / 100;
|
|
|
|
|
|
|
|
value = (tmp[5+Index] << 16) + tmp[4+Index];
|
|
value = (tmp[5+Index] << 16) + tmp[4+Index];
|
|
|
- pwr->power = value / 1000.0f;
|
|
|
|
|
|
|
+ pwr->power = value;
|
|
|
|
|
|
|
|
value = (tmp[7+Index] << 16) + tmp[6+Index];
|
|
value = (tmp[7+Index] << 16) + tmp[6+Index];
|
|
|
|
|
|
|
|
value = (tmp[9+Index] << 16) + tmp[8+Index];
|
|
value = (tmp[9+Index] << 16) + tmp[8+Index];
|
|
|
|
|
|
|
|
value = (tmp[11+Index] << 16) + tmp[10+Index];
|
|
value = (tmp[11+Index] << 16) + tmp[10+Index];
|
|
|
- pwr->freq = value / 1000.0f;
|
|
|
|
|
|
|
+ pwr->freq = value / 100;
|
|
|
|
|
|
|
|
value = (tmp[13+Index] << 16) + tmp[12+Index];
|
|
value = (tmp[13+Index] << 16) + tmp[12+Index];
|
|
|
- pwr->consump = value / 1000.0f;
|
|
|
|
|
|
|
+ pwr->consump = value ;
|
|
|
|
|
|
|
|
value = (tmp[15+Index] << 16) + tmp[14+Index];
|
|
value = (tmp[15+Index] << 16) + tmp[14+Index];
|
|
|
- pwr->factor = value / 1023.0f;
|
|
|
|
|
|
|
+ pwr->factor = value / 10;
|
|
|
|
|
|
|
|
- pbrd->pch[i].time = tm;
|
|
|
|
|
|
|
+ //pbrd->pch[i].time = tm;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -698,12 +701,12 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
for (i=0; i<pbrd->chs; i++) {
|
|
for (i=0; i<pbrd->chs; i++) {
|
|
|
if(h->prod->type==PDU_AC_I3O3) {
|
|
if(h->prod->type==PDU_AC_I3O3) {
|
|
|
for(int j = 0; j < 3;j++)
|
|
for(int j = 0; j < 3;j++)
|
|
|
- pbrd->pch[i].power[j].status = tmp[0+(j*2)+ (i*6)] & 0x01;
|
|
|
|
|
- pbrd->pch[i].power[0].nwire = tmp[18] & 0x01;
|
|
|
|
|
|
|
+ pbrd->pch[i].status = tmp[0+(j*2)+ (i*6)] & 0x01;
|
|
|
|
|
+ pbrd->pch[i].nwire = tmp[18] & 0x01;
|
|
|
}else {
|
|
}else {
|
|
|
int Index = i * 2;
|
|
int Index = i * 2;
|
|
|
- pbrd->pch[i].power[0].status = tmp[0+Index] & 0x01;
|
|
|
|
|
- pbrd->pch[i].power[0].nwire = tmp[18] & 0x01;
|
|
|
|
|
|
|
+ pbrd->pch[i].status = tmp[0+Index] & 0x01;
|
|
|
|
|
+ pbrd->pch[i].nwire = tmp[18] & 0x01;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -746,7 +749,7 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
pbrd->brk[0].samp.sw = (tmp[0]&BIT(0))?1:0;
|
|
pbrd->brk[0].samp.sw = (tmp[0]&BIT(0))?1:0;
|
|
|
- pbrd->brk[0].samp.time = tm;
|
|
|
|
|
|
|
+ //pbrd->brk[0].samp.time = tm;
|
|
|
|
|
|
|
|
// read v max
|
|
// read v max
|
|
|
offset = POWER_AC3_THRESHOLD_VOL_MAX;
|
|
offset = POWER_AC3_THRESHOLD_VOL_MAX;
|
|
@@ -759,11 +762,11 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
int Index = i * 3;
|
|
int Index = i * 3;
|
|
|
int ch_idx = pbrd->ch0-1+i/3;
|
|
int ch_idx = pbrd->ch0-1+i/3;
|
|
|
pch = &pbrd->pch[ch_idx];
|
|
pch = &pbrd->pch[ch_idx];
|
|
|
- pch->thr.v_upper.val = ((tmp[Index+1] << 16) + (tmp[Index+0])) / 1000;
|
|
|
|
|
|
|
+ pch->thr.v_upper = ((tmp[Index+1] << 16) + (tmp[Index+0])) / 100;
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
pch = &pbrd->pch[i];
|
|
pch = &pbrd->pch[i];
|
|
|
- pch->thr.v_upper.val = ((tmp[i+1] << 16) + (tmp[i+0])) / 1000;
|
|
|
|
|
|
|
+ pch->thr.v_upper = ((tmp[i+1] << 16) + (tmp[i+0])) / 100;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
offset = POWER_AC3_THRESHOLD_VOL_MIN;
|
|
offset = POWER_AC3_THRESHOLD_VOL_MIN;
|
|
@@ -775,11 +778,11 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
int Index = i * 3;
|
|
int Index = i * 3;
|
|
|
int ch_idx = pbrd->ch0-1+i/3;
|
|
int ch_idx = pbrd->ch0-1+i/3;
|
|
|
pch = &pbrd->pch[ch_idx];
|
|
pch = &pbrd->pch[ch_idx];
|
|
|
- pch->thr.v_lower.val = ((tmp[Index+1] << 16) + (tmp[Index+0])) / 1000;
|
|
|
|
|
|
|
+ pch->thr.v_lower = ((tmp[Index+1] << 16) + (tmp[Index+0])) / 100;
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
pch = &pbrd->pch[i];
|
|
pch = &pbrd->pch[i];
|
|
|
- pch->thr.v_lower.val = ((tmp[i+1] << 16) + (tmp[i+0])) / 1000;
|
|
|
|
|
|
|
+ pch->thr.v_lower = ((tmp[i+1] << 16) + (tmp[i+0])) / 100;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
offset = POWER_AC3_THRESHOLD_CUR_MAX;
|
|
offset = POWER_AC3_THRESHOLD_CUR_MAX;
|
|
@@ -791,11 +794,11 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
int Index = i * 3;
|
|
int Index = i * 3;
|
|
|
int ch_idx = pbrd->ch0-1+i/3;
|
|
int ch_idx = pbrd->ch0-1+i/3;
|
|
|
pch = &pbrd->pch[ch_idx];
|
|
pch = &pbrd->pch[ch_idx];
|
|
|
- pch->thr.c_upper.val = ((tmp[Index+1] << 16) + (tmp[Index+0])) / 1000;
|
|
|
|
|
|
|
+ pch->thr.c_upper = ((tmp[Index+1] << 16) + (tmp[Index+0])) / 100;
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
pch = &pbrd->pch[i];
|
|
pch = &pbrd->pch[i];
|
|
|
- pch->thr.c_upper.val = ((tmp[i+1] << 16) + (tmp[i+0])) / 1000;
|
|
|
|
|
|
|
+ pch->thr.c_upper = ((tmp[i+1] << 16) + (tmp[i+0])) / 100;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
offset = POWER_AC3_THRESHOLD_PWR_MAX;
|
|
offset = POWER_AC3_THRESHOLD_PWR_MAX;
|
|
@@ -807,11 +810,11 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
int Index = i * 3;
|
|
int Index = i * 3;
|
|
|
int ch_idx = pbrd->ch0-1+i/3;
|
|
int ch_idx = pbrd->ch0-1+i/3;
|
|
|
pch = &pbrd->pch[ch_idx];
|
|
pch = &pbrd->pch[ch_idx];
|
|
|
- pch->thr.p_upper.val = ((tmp[Index+1] << 16) + (tmp[Index+0])) / 1000;
|
|
|
|
|
|
|
+ pch->thr.p_upper = ((tmp[Index+1] << 16) + (tmp[Index+0])) / 100;
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
pch = &pbrd->pch[i];
|
|
pch = &pbrd->pch[i];
|
|
|
- pch->thr.p_upper.val = ((tmp[i+1] << 16) + (tmp[i+0])) / 1000;
|
|
|
|
|
|
|
+ pch->thr.p_upper = ((tmp[i+1] << 16) + (tmp[i+0])) / 100;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
offset = POWER_AC3_THRESHOLD_PWRCON_MAX;
|
|
offset = POWER_AC3_THRESHOLD_PWRCON_MAX;
|
|
@@ -823,11 +826,11 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
int Index = i * 3;
|
|
int Index = i * 3;
|
|
|
int ch_idx = pbrd->ch0-1+i/3;
|
|
int ch_idx = pbrd->ch0-1+i/3;
|
|
|
pch = &pbrd->pch[ch_idx];
|
|
pch = &pbrd->pch[ch_idx];
|
|
|
- pch->thr.w_upper.val = ((tmp[Index+1] << 16) + (tmp[Index+0])) / 1000;
|
|
|
|
|
|
|
+ pch->thr.w_upper = ((tmp[Index+1] << 16) + (tmp[Index+0])) / 100;
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
pch = &pbrd->pch[i];
|
|
pch = &pbrd->pch[i];
|
|
|
- pch->thr.w_upper.val = ((tmp[i+1] << 16) + (tmp[i+0])) / 1000;
|
|
|
|
|
|
|
+ pch->thr.w_upper = ((tmp[i+1] << 16) + (tmp[i+0])) / 100;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -943,7 +946,7 @@ int power_deinit(void)
|
|
|
|
|
|
|
|
static power_ch_t* get_ch(power_handle_t *h, uint8_t ch)
|
|
static power_ch_t* get_ch(power_handle_t *h, uint8_t ch)
|
|
|
{
|
|
{
|
|
|
- if(!h->pch || !h->chs || !h->pch[ch]) {
|
|
|
|
|
|
|
+ if(!h->chs || !h->pch[ch]) {
|
|
|
return NULL;
|
|
return NULL;
|
|
|
}
|
|
}
|
|
|
return h->pch[ch];
|
|
return h->pch[ch];
|
|
@@ -971,7 +974,7 @@ int power_get_board(board_data_t *pbrd)
|
|
|
power_handle_t *h=&pwrHandle;
|
|
power_handle_t *h=&pwrHandle;
|
|
|
|
|
|
|
|
lock_on(h->lck);
|
|
lock_on(h->lck);
|
|
|
- if(!pbrd || !h->pch || !h->cnt || !h->pbrd[pbrd->addr]) {
|
|
|
|
|
|
|
+ if(!pbrd || !h->cnt || !h->pbrd[pbrd->addr]) {
|
|
|
lock_off(h->lck);
|
|
lock_off(h->lck);
|
|
|
return -1;
|
|
return -1;
|
|
|
}
|
|
}
|
|
@@ -987,7 +990,7 @@ int power_set(int ch, power_ch_t *pch)
|
|
|
power_handle_t *h=&pwrHandle;
|
|
power_handle_t *h=&pwrHandle;
|
|
|
|
|
|
|
|
lock_on(h->lck);
|
|
lock_on(h->lck);
|
|
|
- if(!pch || !h->pch || !h->chs || !h->pch[pch->info.ch]) {
|
|
|
|
|
|
|
+ if(!pch || !h->chs || !h->pch[pch->info.ch]) {
|
|
|
lock_off(h->lck);
|
|
lock_off(h->lck);
|
|
|
return -1;
|
|
return -1;
|
|
|
}
|
|
}
|
|
@@ -1005,8 +1008,8 @@ static int power_map(power_handle_t *h, int chs)
|
|
|
|
|
|
|
|
if(chs>0) {
|
|
if(chs>0) {
|
|
|
h->chs = 0;
|
|
h->chs = 0;
|
|
|
- h->pch = (power_ch_t**)calloc(1, sizeof(power_ch_t*)*chs);
|
|
|
|
|
- if(h->pch) {
|
|
|
|
|
|
|
+ //h->pch = (power_ch_t**)calloc(1, sizeof(power_ch_t*)*chs);
|
|
|
|
|
+ // if(h->pch) {
|
|
|
h->chs = chs;
|
|
h->chs = chs;
|
|
|
h->pch[0] = &h->ch0;
|
|
h->pch[0] = &h->ch0;
|
|
|
strcpy(h->pch[0]->info.name, "ALL");
|
|
strcpy(h->pch[0]->info.name, "ALL");
|
|
@@ -1022,7 +1025,7 @@ static int power_map(power_handle_t *h, int chs)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
+ // }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
@@ -1061,6 +1064,7 @@ int power_scan(void)
|
|
|
board_data_t *pbrd=NULL;
|
|
board_data_t *pbrd=NULL;
|
|
|
power_handle_t *h=&pwrHandle;
|
|
power_handle_t *h=&pwrHandle;
|
|
|
uint16_t times,nGroups=h->prod->ch_delay;
|
|
uint16_t times,nGroups=h->prod->ch_delay;
|
|
|
|
|
+ uint16_t flag_full = 0;
|
|
|
|
|
|
|
|
lock_on(h->lck);
|
|
lock_on(h->lck);
|
|
|
power_clear(h);
|
|
power_clear(h);
|
|
@@ -1068,7 +1072,7 @@ int power_scan(void)
|
|
|
pch = &h->ch0;
|
|
pch = &h->ch0;
|
|
|
pch->info.addr = 0;
|
|
pch->info.addr = 0;
|
|
|
pch->info.ch = 0;
|
|
pch->info.ch = 0;
|
|
|
-
|
|
|
|
|
|
|
+ int ch_count = 0;
|
|
|
for(i=1; i<=h->brd_max; i++) {
|
|
for(i=1; i<=h->brd_max; i++) {
|
|
|
r = get_key(h, i, &h->key[i]);
|
|
r = get_key(h, i, &h->key[i]);
|
|
|
if(r==0) {
|
|
if(r==0) {
|
|
@@ -1079,7 +1083,7 @@ int power_scan(void)
|
|
|
LOGE("___ power_scan addr %d failed\n", i);
|
|
LOGE("___ power_scan addr %d failed\n", i);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
for(i=1; i<h->brd_max; i++) {
|
|
for(i=1; i<h->brd_max; i++) {
|
|
|
pkey = &h->key[i];
|
|
pkey = &h->key[i];
|
|
|
if(pkey->chs>0) {
|
|
if(pkey->chs>0) {
|
|
@@ -1094,12 +1098,18 @@ int power_scan(void)
|
|
|
pbrd->chs = pkey->chs;
|
|
pbrd->chs = pkey->chs;
|
|
|
pbrd->addr = i;
|
|
pbrd->addr = i;
|
|
|
pbrd->ch0 = ch_idx;
|
|
pbrd->ch0 = ch_idx;
|
|
|
|
|
+ if((ch_count+ pkey->chs) >= 32)
|
|
|
|
|
+ {
|
|
|
|
|
+ pkey->chs = 31 - ch_count;
|
|
|
|
|
+ flag_full = 1;
|
|
|
|
|
+ }
|
|
|
pch = (power_ch_t*)calloc(1, sizeof(power_ch_t)*pkey->chs);
|
|
pch = (power_ch_t*)calloc(1, sizeof(power_ch_t)*pkey->chs);
|
|
|
|
|
+ ch_count += (pkey->chs);
|
|
|
if(!pch) {
|
|
if(!pch) {
|
|
|
LOGE("___ power_scan, calloc pch failed\n");
|
|
LOGE("___ power_scan, calloc pch failed\n");
|
|
|
return -1;
|
|
return -1;
|
|
|
}
|
|
}
|
|
|
- LOGD("__ power init board %d, b_mem=%d ch_mem=%d\n",i,sizeof(board_data_t),sizeof(power_ch_t)*pkey->chs);
|
|
|
|
|
|
|
+ LOGD("__ power init board %d, b_mem=%d ch_mem=%d sizeof(power_ch_t)=%d\n",i,sizeof(board_data_t),sizeof(power_ch_t)*pkey->chs,sizeof(power_ch_t));
|
|
|
for(j=0; j<pkey->chs; j++) {
|
|
for(j=0; j<pkey->chs; j++) {
|
|
|
pch[j].info.addr = i;
|
|
pch[j].info.addr = i;
|
|
|
pch[j].info.sch = j; //序号从0开始
|
|
pch[j].info.sch = j; //序号从0开始
|
|
@@ -1115,8 +1125,8 @@ int power_scan(void)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
times = (pch[j].info.ch%nGroups)?pch[j].info.ch:nGroups;
|
|
times = (pch[j].info.ch%nGroups)?pch[j].info.ch:nGroups;
|
|
|
- pch[j].info.open_delay = 1000*times;
|
|
|
|
|
- pch[j].info.close_delay = 1000*times;
|
|
|
|
|
|
|
+ pch[j].info.open_delay = times;
|
|
|
|
|
+ pch[j].info.close_delay = times;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if(pbrd->type==AC_SINGLE_S_TYPE || pbrd->type==AC_SINGLE_B_TYPE) {
|
|
if(pbrd->type==AC_SINGLE_S_TYPE || pbrd->type==AC_SINGLE_B_TYPE) {
|
|
@@ -1132,11 +1142,14 @@ int power_scan(void)
|
|
|
else {
|
|
else {
|
|
|
ch_idx += pkey->chs;
|
|
ch_idx += pkey->chs;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
brd_idx++;
|
|
brd_idx++;
|
|
|
|
|
|
|
|
pbrd->pch = pch;
|
|
pbrd->pch = pch;
|
|
|
h->pbrd[i] = pbrd;
|
|
h->pbrd[i] = pbrd;
|
|
|
total_chs += pkey->chs;
|
|
total_chs += pkey->chs;
|
|
|
|
|
+ if(flag_full)
|
|
|
|
|
+ break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
power_map(h, total_chs);
|
|
power_map(h, total_chs);
|
|
@@ -1164,7 +1177,7 @@ int power_reset(void)
|
|
|
uint16_t tmp[8];
|
|
uint16_t tmp[8];
|
|
|
offset = POWER_AC_CH_STAT_L;
|
|
offset = POWER_AC_CH_STAT_L;
|
|
|
for(i=1; i<=pbrd->chs; i++) {
|
|
for(i=1; i<=pbrd->chs; i++) {
|
|
|
- tmp[i] = pbrd->pch[i].power[0].status;
|
|
|
|
|
|
|
+ tmp[i] = pbrd->pch[i].status;
|
|
|
}
|
|
}
|
|
|
r = write_reg(h, pbrd->addr, offset, tmp+1, pbrd->chs-1);
|
|
r = write_reg(h, pbrd->addr, offset, tmp+1, pbrd->chs-1);
|
|
|
}
|
|
}
|
|
@@ -1220,7 +1233,7 @@ int power_reset(void)
|
|
|
for (i=1; i<=pbrd->chs; i++) {
|
|
for (i=1; i<=pbrd->chs; i++) {
|
|
|
memset(data_temp, 0, sizeof(data_temp));
|
|
memset(data_temp, 0, sizeof(data_temp));
|
|
|
offset = POWER_AC3_OUT_ENABLE + i;
|
|
offset = POWER_AC3_OUT_ENABLE + i;
|
|
|
- data_temp[0] = pbrd->pch[i].power[0].status;
|
|
|
|
|
|
|
+ data_temp[0] = pbrd->pch[i].status;
|
|
|
r = write_reg(h, pbrd->addr, offset, data_temp, 2);
|
|
r = write_reg(h, pbrd->addr, offset, data_temp, 2);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -1236,18 +1249,18 @@ int power_reset(void)
|
|
|
int power_set_ch_sw_n(power_ch_t *pch)
|
|
int power_set_ch_sw_n(power_ch_t *pch)
|
|
|
{
|
|
{
|
|
|
int r;
|
|
int r;
|
|
|
- uint16_t st= pch->power[0].status,offset,tmp[2]={0};
|
|
|
|
|
|
|
+ uint16_t st= pch->status,offset,tmp[2]={0};
|
|
|
power_handle_t *h=&pwrHandle;
|
|
power_handle_t *h=&pwrHandle;
|
|
|
lock_on(h->lck);
|
|
lock_on(h->lck);
|
|
|
- if (pch->thr.v_upper.en == 1)
|
|
|
|
|
|
|
+ if (pch->thr.en.v_upper_en == 1)
|
|
|
st |= ENABLE_AC3_V_UP;
|
|
st |= ENABLE_AC3_V_UP;
|
|
|
- if (pch->thr.v_lower.en == 1)
|
|
|
|
|
|
|
+ if (pch->thr.en.v_lower_en == 1)
|
|
|
st |= ENABLE_AC3_V_DOWN;
|
|
st |= ENABLE_AC3_V_DOWN;
|
|
|
- if (pch->thr.c_upper.en == 1)
|
|
|
|
|
|
|
+ if (pch->thr.en.c_upper_en == 1)
|
|
|
st |= ENABLE_AC3_C_UP;
|
|
st |= ENABLE_AC3_C_UP;
|
|
|
- if (pch->thr.p_upper.en == 1)
|
|
|
|
|
|
|
+ if (pch->thr.en.p_upper_en == 1)
|
|
|
st |= ENABLE_AC3_P_UP;
|
|
st |= ENABLE_AC3_P_UP;
|
|
|
- if (pch->thr.w_upper.en == 1)
|
|
|
|
|
|
|
+ if (pch->thr.en.w_upper_en == 1)
|
|
|
st |= ENABLE_AC3_W_UP;
|
|
st |= ENABLE_AC3_W_UP;
|
|
|
switch(pch->info.type) {
|
|
switch(pch->info.type) {
|
|
|
|
|
|
|
@@ -1307,15 +1320,15 @@ int power_set_ch_sw(uint8_t ch, uint8_t on)
|
|
|
return -1;
|
|
return -1;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (pch->thr.v_upper.en == 1)
|
|
|
|
|
|
|
+ if (pch->thr.en.v_upper_en == 1)
|
|
|
st |= ENABLE_AC3_V_UP;
|
|
st |= ENABLE_AC3_V_UP;
|
|
|
- if (pch->thr.v_lower.en == 1)
|
|
|
|
|
|
|
+ if (pch->thr.en.v_lower_en == 1)
|
|
|
st |= ENABLE_AC3_V_DOWN;
|
|
st |= ENABLE_AC3_V_DOWN;
|
|
|
- if (pch->thr.c_upper.en == 1)
|
|
|
|
|
|
|
+ if (pch->thr.en.c_upper_en == 1)
|
|
|
st |= ENABLE_AC3_C_UP;
|
|
st |= ENABLE_AC3_C_UP;
|
|
|
- if (pch->thr.p_upper.en == 1)
|
|
|
|
|
|
|
+ if (pch->thr.en.p_upper_en == 1)
|
|
|
st |= ENABLE_AC3_P_UP;
|
|
st |= ENABLE_AC3_P_UP;
|
|
|
- if (pch->thr.w_upper.en == 1)
|
|
|
|
|
|
|
+ if (pch->thr.en.w_upper_en == 1)
|
|
|
st |= ENABLE_AC3_W_UP;
|
|
st |= ENABLE_AC3_W_UP;
|
|
|
|
|
|
|
|
switch(pch->info.type) {
|
|
switch(pch->info.type) {
|
|
@@ -1443,14 +1456,14 @@ int power_set_alarm(power_ch_t *pch)
|
|
|
r = -1;
|
|
r = -1;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if(r==0) {
|
|
|
|
|
- if(pch->thr.v_upper.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(1);
|
|
|
|
|
- if(pch->thr.v_lower.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(2);
|
|
|
|
|
- if(pch->thr.c_upper.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(0);
|
|
|
|
|
- if(pch->thr.p_upper.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(3);
|
|
|
|
|
- if(pch->thr.w_upper.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(4);
|
|
|
|
|
- r = write_reg(h, pch->info.addr, offset, &nStatus, 1);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+// if(r==0) {
|
|
|
|
|
+// if(pch->thr.v_upper.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(1);
|
|
|
|
|
+// if(pch->thr.v_lower.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(2);
|
|
|
|
|
+// if(pch->thr.c_upper.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(0);
|
|
|
|
|
+// if(pch->thr.p_upper.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(3);
|
|
|
|
|
+// if(pch->thr.w_upper.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(4);
|
|
|
|
|
+// r = write_reg(h, pch->info.addr, offset, &nStatus, 1);
|
|
|
|
|
+// }
|
|
|
lock_off(h->lck);
|
|
lock_off(h->lck);
|
|
|
|
|
|
|
|
return r;
|
|
return r;
|
|
@@ -1484,11 +1497,11 @@ int power_get_threshold(power_ch_t *pch)
|
|
|
r = read_reg(h, pch->info.addr, offset, buffer, 16);
|
|
r = read_reg(h, pch->info.addr, offset, buffer, 16);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
|
|
|
|
|
- pch->thr.v_upper.val = ((buffer[1]<<16)|buffer[0])/1000;
|
|
|
|
|
- pch->thr.v_lower.val = ((buffer[3]<<16)|buffer[2])/1000;
|
|
|
|
|
- pch->thr.c_upper.val = ((buffer[5]<<16)|buffer[4])/1000;
|
|
|
|
|
- pch->thr.p_upper.val = ((buffer[9]<<16)|buffer[8])/1000;
|
|
|
|
|
- pch->thr.w_upper.val = ((buffer[13]<<16)|buffer[12])/1000;
|
|
|
|
|
|
|
+ pch->thr.v_upper = ((buffer[1]<<16)|buffer[0])/100;
|
|
|
|
|
+ pch->thr.v_lower = ((buffer[3]<<16)|buffer[2])/100;
|
|
|
|
|
+ pch->thr.c_upper = ((buffer[5]<<16)|buffer[4])/100;
|
|
|
|
|
+ pch->thr.p_upper = ((buffer[9]<<16)|buffer[8])/100;
|
|
|
|
|
+ pch->thr.w_upper = ((buffer[13]<<16)|buffer[12])/100;
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
@@ -1501,27 +1514,27 @@ int power_get_threshold(power_ch_t *pch)
|
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_VOL_MAX:POWER_DC_THRESHOLD_VOL_MAX;
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_VOL_MAX:POWER_DC_THRESHOLD_VOL_MAX;
|
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.v_upper.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.v_upper = ((temp[1]<<16)|temp[0])/100;
|
|
|
|
|
|
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_VOL_MIN:POWER_DC_THRESHOLD_VOL_MIN;
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_VOL_MIN:POWER_DC_THRESHOLD_VOL_MIN;
|
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.v_lower.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.v_lower = ((temp[1]<<16)|temp[0])/100;
|
|
|
|
|
|
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_CUR_MAX:POWER_DC_THRESHOLD_CUR_MAX;
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_CUR_MAX:POWER_DC_THRESHOLD_CUR_MAX;
|
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.c_upper.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.c_upper = ((temp[1]<<16)|temp[0])/100;
|
|
|
|
|
|
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_PWR_MAX:POWER_DC_THRESHOLD_POWER_MAX;
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_PWR_MAX:POWER_DC_THRESHOLD_POWER_MAX;
|
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.p_upper.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.p_upper = ((temp[1]<<16)|temp[0])/100;
|
|
|
|
|
|
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_PWRCON_MAX:POWER_DC_THRESHOLD_POWERCON_MAX;
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_PWRCON_MAX:POWER_DC_THRESHOLD_POWERCON_MAX;
|
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.w_upper.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.w_upper = ((temp[1]<<16)|temp[0])/100;
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
@@ -1535,48 +1548,48 @@ int power_get_threshold(power_ch_t *pch)
|
|
|
|
|
|
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.v_upper.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.v_upper = ((temp[1]<<16)|temp[0])/100;
|
|
|
|
|
|
|
|
r = read_reg(h, pch->info.addr, offset+1, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset+1, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.v_lower.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.v_lower = ((temp[1]<<16)|temp[0])/100;
|
|
|
|
|
|
|
|
r = read_reg(h, pch->info.addr, offset+2, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset+2, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.c_upper.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.c_upper = ((temp[1]<<16)|temp[0])/100;
|
|
|
|
|
|
|
|
r = read_reg(h, pch->info.addr, offset+3, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset+3, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.p_upper.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.p_upper = ((temp[1]<<16)|temp[0])/100;
|
|
|
|
|
|
|
|
r = read_reg(h, pch->info.addr, offset+4, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset+4, temp, 2);
|
|
|
- pch->thr.w_upper.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.w_upper = ((temp[1]<<16)|temp[0])/100;
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
offset = POWER_AC3_THRESHOLD_VOL_MAX;
|
|
offset = POWER_AC3_THRESHOLD_VOL_MAX;
|
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.v_upper.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.v_upper = ((temp[1]<<16)|temp[0])/100;
|
|
|
|
|
|
|
|
offset = POWER_AC3_THRESHOLD_VOL_MIN;
|
|
offset = POWER_AC3_THRESHOLD_VOL_MIN;
|
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.v_lower.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.v_lower = ((temp[1]<<16)|temp[0])/100;
|
|
|
|
|
|
|
|
offset = POWER_AC3_THRESHOLD_CUR_MAX;
|
|
offset = POWER_AC3_THRESHOLD_CUR_MAX;
|
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.c_upper.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.c_upper = ((temp[1]<<16)|temp[0])/100;
|
|
|
|
|
|
|
|
offset = POWER_AC3_THRESHOLD_PWR_MAX;
|
|
offset = POWER_AC3_THRESHOLD_PWR_MAX;
|
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.p_upper.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.p_upper = ((temp[1]<<16)|temp[0]);
|
|
|
|
|
|
|
|
offset = POWER_AC3_THRESHOLD_VOL_MAX;
|
|
offset = POWER_AC3_THRESHOLD_VOL_MAX;
|
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
r = read_reg(h, pch->info.addr, offset, temp, 2);
|
|
|
if(r) break;
|
|
if(r) break;
|
|
|
- pch->thr.p_upper.val = ((temp[1]<<16)|temp[0])/1000;
|
|
|
|
|
|
|
+ pch->thr.p_upper = ((temp[1]<<16)|temp[0]);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
@@ -1610,15 +1623,15 @@ int power_set_threshold(power_ch_t *pch)
|
|
|
uint16_t data_buf[16] = {0};
|
|
uint16_t data_buf[16] = {0};
|
|
|
|
|
|
|
|
//电压上限
|
|
//电压上限
|
|
|
- data_temp = (pch->thr.v_upper.val*1000);
|
|
|
|
|
|
|
+ data_temp = (pch->thr.v_upper*100);
|
|
|
data_buf[0] = data_temp;
|
|
data_buf[0] = data_temp;
|
|
|
data_buf[1] = data_temp>>16;
|
|
data_buf[1] = data_temp>>16;
|
|
|
//电压下限
|
|
//电压下限
|
|
|
- data_temp = (pch->thr.v_lower.val*1000);
|
|
|
|
|
|
|
+ data_temp = (pch->thr.v_lower*100);
|
|
|
data_buf[2] = data_temp;
|
|
data_buf[2] = data_temp;
|
|
|
data_buf[3] = data_temp>>16;
|
|
data_buf[3] = data_temp>>16;
|
|
|
//电流上限
|
|
//电流上限
|
|
|
- data_temp = (pch->thr.c_upper.val*1000);
|
|
|
|
|
|
|
+ data_temp = (pch->thr.c_upper*100);
|
|
|
data_buf[4] = data_temp;
|
|
data_buf[4] = data_temp;
|
|
|
data_buf[5] = data_temp>>16;
|
|
data_buf[5] = data_temp>>16;
|
|
|
//电流下限
|
|
//电流下限
|
|
@@ -1627,7 +1640,7 @@ int power_set_threshold(power_ch_t *pch)
|
|
|
data_buf[7] = data_temp>>16;
|
|
data_buf[7] = data_temp>>16;
|
|
|
|
|
|
|
|
//功率上限
|
|
//功率上限
|
|
|
- data_temp = (pch->thr.p_upper.val*1000);
|
|
|
|
|
|
|
+ data_temp = (pch->thr.p_upper);
|
|
|
data_buf[8] = data_temp;
|
|
data_buf[8] = data_temp;
|
|
|
data_buf[9] = data_temp>>16;
|
|
data_buf[9] = data_temp>>16;
|
|
|
//功率下限
|
|
//功率下限
|
|
@@ -1636,7 +1649,7 @@ int power_set_threshold(power_ch_t *pch)
|
|
|
data_buf[11] = data_temp>>16;
|
|
data_buf[11] = data_temp>>16;
|
|
|
|
|
|
|
|
//电能上限
|
|
//电能上限
|
|
|
- data_temp = (pch->thr.w_upper.val*1000);
|
|
|
|
|
|
|
+ data_temp = (pch->thr.w_upper);
|
|
|
data_buf[12] = data_temp;
|
|
data_buf[12] = data_temp;
|
|
|
data_buf[13] = data_temp>>16;
|
|
data_buf[13] = data_temp>>16;
|
|
|
//电能下限
|
|
//电能下限
|
|
@@ -1664,31 +1677,31 @@ int power_set_threshold(power_ch_t *pch)
|
|
|
uint32_t value;
|
|
uint32_t value;
|
|
|
|
|
|
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_VOL_MAX:POWER_DC_THRESHOLD_VOL_MAX;
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_VOL_MAX:POWER_DC_THRESHOLD_VOL_MAX;
|
|
|
- value = pch->thr.v_upper.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.v_upper * 100;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
|
|
|
|
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_VOL_MIN:POWER_DC_THRESHOLD_VOL_MIN;
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_VOL_MIN:POWER_DC_THRESHOLD_VOL_MIN;
|
|
|
- value = pch->thr.v_lower.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.v_lower * 100;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
|
|
|
|
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_CUR_MAX:POWER_DC_THRESHOLD_CUR_MAX;
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_CUR_MAX:POWER_DC_THRESHOLD_CUR_MAX;
|
|
|
- value = pch->thr.c_upper.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.c_upper * 100;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
|
|
|
|
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_PWR_MAX:POWER_DC_THRESHOLD_POWER_MAX;
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_PWR_MAX:POWER_DC_THRESHOLD_POWER_MAX;
|
|
|
- value = pch->thr.p_upper.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.p_upper;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
|
|
|
|
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_PWRCON_MAX:POWER_DC_THRESHOLD_POWERCON_MAX;
|
|
offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_PWRCON_MAX:POWER_DC_THRESHOLD_POWERCON_MAX;
|
|
|
- value = pch->thr.w_upper.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.w_upper;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
@@ -1705,27 +1718,27 @@ int power_set_threshold(power_ch_t *pch)
|
|
|
|
|
|
|
|
if(pch->info.ch<0) {
|
|
if(pch->info.ch<0) {
|
|
|
offset = POWER_AC3_THRESHOLD_IN;
|
|
offset = POWER_AC3_THRESHOLD_IN;
|
|
|
- value = pch->thr.v_upper.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.v_upper * 100;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
|
|
|
|
|
|
- value = pch->thr.v_upper.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.v_upper * 100;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset+1, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset+1, data_temp, 2);
|
|
|
|
|
|
|
|
- value = pch->thr.c_upper.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.c_upper * 100;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset+2, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset+2, data_temp, 2);
|
|
|
|
|
|
|
|
- value = pch->thr.p_upper.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.p_upper;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset+3, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset+3, data_temp, 2);
|
|
|
|
|
|
|
|
- value = pch->thr.w_upper.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.w_upper;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset+4, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset+4, data_temp, 2);
|
|
@@ -1734,7 +1747,7 @@ int power_set_threshold(power_ch_t *pch)
|
|
|
{
|
|
{
|
|
|
|
|
|
|
|
offset = POWER_AC3_THRESHOLD_VOL_MAX;
|
|
offset = POWER_AC3_THRESHOLD_VOL_MAX;
|
|
|
- value = pch->thr.v_upper.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.v_upper * 100;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
@@ -1745,7 +1758,7 @@ int power_set_threshold(power_ch_t *pch)
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
|
}
|
|
}
|
|
|
offset = POWER_AC3_THRESHOLD_VOL_MIN;
|
|
offset = POWER_AC3_THRESHOLD_VOL_MIN;
|
|
|
- value = pch->thr.v_lower.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.v_lower * 100;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
@@ -1756,7 +1769,7 @@ int power_set_threshold(power_ch_t *pch)
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
|
}
|
|
}
|
|
|
offset = POWER_AC3_THRESHOLD_CUR_MAX;
|
|
offset = POWER_AC3_THRESHOLD_CUR_MAX;
|
|
|
- value = pch->thr.c_upper.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.c_upper * 100;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
@@ -1767,7 +1780,7 @@ int power_set_threshold(power_ch_t *pch)
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
|
}
|
|
}
|
|
|
offset = POWER_AC3_THRESHOLD_PWR_MAX;
|
|
offset = POWER_AC3_THRESHOLD_PWR_MAX;
|
|
|
- value = pch->thr.p_upper.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.p_upper;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
@@ -1778,7 +1791,7 @@ int power_set_threshold(power_ch_t *pch)
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
|
}
|
|
}
|
|
|
offset = POWER_AC3_THRESHOLD_PWRCON_MAX;
|
|
offset = POWER_AC3_THRESHOLD_PWRCON_MAX;
|
|
|
- value = pch->thr.w_upper.val * 1000;
|
|
|
|
|
|
|
+ value = pch->thr.w_upper;
|
|
|
data_temp[0] = value & 0XFFFF;
|
|
data_temp[0] = value & 0XFFFF;
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
r = write_reg(h, pch->info.addr, offset, data_temp, 2);
|
|
@@ -1824,7 +1837,7 @@ int power_set_open_delay(power_ch_t *pch)
|
|
|
|
|
|
|
|
case DCPDU_TYPE:
|
|
case DCPDU_TYPE:
|
|
|
{
|
|
{
|
|
|
- uint32_t time=pch->info.open_delay/1000;
|
|
|
|
|
|
|
+ uint32_t time=pch->info.open_delay*100;
|
|
|
tmp[0] = time & 0xffff;
|
|
tmp[0] = time & 0xffff;
|
|
|
tmp[1] = (time >> 16) & 0xffff;
|
|
tmp[1] = (time >> 16) & 0xffff;
|
|
|
offset = POWER_DC_SET_OPEN_DELAY+pch->info.ch-1;
|
|
offset = POWER_DC_SET_OPEN_DELAY+pch->info.ch-1;
|
|
@@ -1834,7 +1847,7 @@ int power_set_open_delay(power_ch_t *pch)
|
|
|
|
|
|
|
|
case TREE_AC_TYPE:
|
|
case TREE_AC_TYPE:
|
|
|
{
|
|
{
|
|
|
- uint32_t time=pch->info.open_delay/1000;
|
|
|
|
|
|
|
+ uint32_t time=pch->info.open_delay*100;
|
|
|
tmp[0] = time & 0xffff;
|
|
tmp[0] = time & 0xffff;
|
|
|
tmp[1] = (time >> 16) & 0xffff;
|
|
tmp[1] = (time >> 16) & 0xffff;
|
|
|
if(h->prod->type==PDU_AC_I3O3) {
|
|
if(h->prod->type==PDU_AC_I3O3) {
|
|
@@ -1883,7 +1896,7 @@ int power_set_close_delay(power_ch_t *pch)
|
|
|
|
|
|
|
|
case DCPDU_TYPE:
|
|
case DCPDU_TYPE:
|
|
|
{
|
|
{
|
|
|
- uint32_t time=pch->info.close_delay/1000;
|
|
|
|
|
|
|
+ uint32_t time=pch->info.close_delay*100;
|
|
|
tmp[0] = time & 0xffff;
|
|
tmp[0] = time & 0xffff;
|
|
|
tmp[1] = (time >> 16) & 0xffff;
|
|
tmp[1] = (time >> 16) & 0xffff;
|
|
|
offset = POWER_DC_SET_CLOSE_DELAY+pch->info.ch-1;
|
|
offset = POWER_DC_SET_CLOSE_DELAY+pch->info.ch-1;
|
|
@@ -1893,7 +1906,7 @@ int power_set_close_delay(power_ch_t *pch)
|
|
|
|
|
|
|
|
case TREE_AC_TYPE:
|
|
case TREE_AC_TYPE:
|
|
|
{
|
|
{
|
|
|
- uint32_t time=pch->info.close_delay/1000;
|
|
|
|
|
|
|
+ uint32_t time=pch->info.close_delay*100;
|
|
|
if(h->prod->type==PDU_AC_I3O3) {
|
|
if(h->prod->type==PDU_AC_I3O3) {
|
|
|
offset = POWER_AC3_CLOSE_DELAY_TIME+pch->info.sch*3;
|
|
offset = POWER_AC3_CLOSE_DELAY_TIME+pch->info.sch*3;
|
|
|
r = write_reg(h, pch->info.addr, offset+0, tmp, 2);
|
|
r = write_reg(h, pch->info.addr, offset+0, tmp, 2);
|